Ir para conteúdo
  • 0

Uma head que fique girando 360º num bloco


Frogguer

Pergunta

14 respostass a esta questão

Posts Recomendados

  • 0

Coloque um armorstand invisível e sem gravidade com a cabeça desejada no lugar da cabeça, e só fique aumentando o yaw do armorstand, quanto menos você aumentar o yaw por segundo/ticks mais suave vai ser a animação.

Link para o comentário
Compartilhar em outros sites

  • 0

Coloque um armorstand invisível e sem gravidade com a cabeça desejada no lugar da cabeça, e só fique aumentando o yaw do armorstand, quanto menos você aumentar o yaw por segundo/ticks mais suave vai ser a animação.

Quero deixar em tamanho real e girando lentamente 

Link para o comentário
Compartilhar em outros sites

  • 0

Cara pra isso você vai ter que mover a posição da cabeça no ArmorStand, existe metódo pra isso. Você terá que alterar o eixo Y do EulerAngle. Fiz um teste:

ArmorStand as = p.getWorld().spawn(p.getLocation(), ArmorStand.class); // spawna a ArmorStand
as.setHelmet(new ItemStack(Material.SKULL_ITEM, 1, (short) 3)); // coloca uma cabeça nela
as.setVisible(false); // coloca pra ela nao ficar visivel
			
new BukkitRunnable() {
	@Override
	public void run() {
		EulerAngle ea = as.getHeadPose(); // obtem a posição atual
		as.setHeadPose(ea.subtract(0, 0.25, 0)); // define a posiçao da cabeça e tira 0.25 do Y
	}
}.runTaskTimer(this, 1L, 1L); // repetindo a cada 1tick, ficou um efeito de rotação até rapido, voce pode ajustar isso
Editado por zDubsCrazy2
Link para o comentário
Compartilhar em outros sites

  • 0

 

Cara pra isso você vai ter que mover a posição da cabeça no ArmorStand, existe metódo pra isso. Você terá que alterar o eixo Y do EulerAngle. Fiz um teste:

ArmorStand as = p.getWorld().spawn(p.getLocation(), ArmorStand.class); // spawna a ArmorStand
as.setHelmet(new ItemStack(Material.SKULL_ITEM, 1, (short) 3)); // coloca uma cabeça nela
as.setVisible(false); // coloca pra ela nao ficar visivel
			
new BukkitRunnable() {
	@Override
	public void run() {
		EulerAngle ea = as.getHeadPose(); // obtem a posição atual
		as.setHeadPose(ea.subtract(0, 0.25, 0)); // define a posiçao da cabeça e tira 0.25 do Y
	}
}.runTaskTimer(this, 1L, 1L); // repetindo a cada 1tick, ficou um efeito de rotação até rapido, voce pode ajustar isso

Está girando mais não com uma bela suavidade ele fica dando umas travada no giro, e se eu botar 1 segundo pra girar vai girar muito rápido 

Link para o comentário
Compartilhar em outros sites

  • 0

Está girando mais não com uma bela suavidade ele fica dando umas travada no giro, e se eu botar 1 segundo pra girar vai girar muito rápido 

Aí é com você meu amigo, a lógica está feita. Tenta subtrair menos a cada tick e vai ajustando o tempo de repetição.

Link para o comentário
Compartilhar em outros sites

  • 0

Aí é com você meu amigo, a lógica está feita. Tenta subtrair menos a cada tick e vai ajustando o tempo de repetição.

Consegui, como queria, mais assim que deslogo e entro no server ele está parado não gira

Link para o comentário
Compartilhar em outros sites

  • 0

Poderia enviar o código? Obrigado.

ArmorStand as = p.getWorld().spawn(p.getLocation(), ArmorStand.class); // spawna a ArmorStand
as.setHelmet(new ItemStack(Material.SKULL_ITEM, 1, (short) 3)); // coloca uma cabeça nela
as.setVisible(false); // coloca pra ela nao ficar visivel
			
new BukkitRunnable() {
	@Override
	public void run() {
		EulerAngle ea = as.getHeadPose(); // obtem a posição atual
		as.setHeadPose(ea.subtract(0, 0.25, 0)); // define a posiçao da cabeça e tira 0.25 do Y
	}
}.runTaskTimer(this, 1L, 1L);
Link para o comentário
Compartilhar em outros sites

  • 0
ArmorStand as = p.getWorld().spawn(p.getLocation(), ArmorStand.class); // spawna a ArmorStand
as.setHelmet(new ItemStack(Material.SKULL_ITEM, 1, (short) 3)); // coloca uma cabeça nela
as.setVisible(false); // coloca pra ela nao ficar visivel
			
new BukkitRunnable() {
	@Override
	public void run() {
		EulerAngle ea = as.getHeadPose(); // obtem a posição atual
		as.setHeadPose(ea.subtract(0, 0.25, 0)); // define a posiçao da cabeça e tira 0.25 do Y
	}
}.runTaskTimer(this, 1L, 1L);

Frogger, isso executa quando você faz um comando? Se sim, tenta por o runnable no onEnable(), e vê se você salva a location em uma config e dps da getLocation la na config ou assim porque senao dps o pl não sabe a location quando reiniciar nem quando o player relogar (isso é o que deve tar acontecendo com voce)

Editado por Hiper
Link para o comentário
Compartilhar em outros sites

  • 0

Frogger, isso executa quando você faz um comando? Se sim, tenta por o runnable no onEnable(), e vê se você salva a location em uma config e dps da getLocation la na config ou assim porque senao dps o pl não sabe a location quando reiniciar nem quando o player relogar (isso é o que deve tar acontecendo com voce)

Entendi, vlw 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...