[RESOLVIDO] Como faço uma seta na direção do inimigo?
3 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Como faço uma seta na direção do inimigo?
Fala gente bom dia!!
alguem poderia me dar uma ideia de como fazer uma seta apontar na direção que o inimigo esta? mesmo ele estando longe
no caso a seta fica junto ao meu player e ela continuamente teria que ficar mostrando a direção do inimigo ate chegar nele
quem puder ajudar agradeço mt
alguem poderia me dar uma ideia de como fazer uma seta apontar na direção que o inimigo esta? mesmo ele estando longe
no caso a seta fica junto ao meu player e ela continuamente teria que ficar mostrando a direção do inimigo ate chegar nele
quem puder ajudar agradeço mt
speedluk- Avançado
- PONTOS : 2676
REPUTAÇÃO : 29
Idade : 32
Respeito as regras :
Re: [RESOLVIDO] Como faço uma seta na direção do inimigo?
Se for um inimigo em específico, adicione sua referência via inspetor e depois no Update do objeto da seta utilize a função LookAt pra seta "olhar" na direção do alvo:
Se for inimigos próximos ao personagem, você pode usar um Raycast para detectar o inimigo mais próximo e armazenar ele dentro do hitInfo e daí utilizar o LookAt da mesma forma.
- Código:
using UnityEngine;
public class Arrow : Monobehaviour {
public Transform enemyTarget;
void Update (){
if (enemyTarget != null)
Transform.LookAt(enemyTarget);
}
}
Se for inimigos próximos ao personagem, você pode usar um Raycast para detectar o inimigo mais próximo e armazenar ele dentro do hitInfo e daí utilizar o LookAt da mesma forma.
Re: [RESOLVIDO] Como faço uma seta na direção do inimigo?
Sim com LookAt funciona o problema no caso é que o objeto com a seta, que no caso faz parte do canvas não fica no player '-'
tive o mesmo problema com tentar colocar uma barra de vida em cima da cabeça dele, mas no caso é basicamente uma esfera que nela tem uma seta que fica apontando para o outro player independente da distancia, mas não achei em lugar nenhum algo que junta um objeto do canvas em cima do player =/
obs; desculpe se não expliquei direito, passei a madrugada queimando a cabeça com esse projeto que to quase deixando de lado ja kk
tive o mesmo problema com tentar colocar uma barra de vida em cima da cabeça dele, mas no caso é basicamente uma esfera que nela tem uma seta que fica apontando para o outro player independente da distancia, mas não achei em lugar nenhum algo que junta um objeto do canvas em cima do player =/
obs; desculpe se não expliquei direito, passei a madrugada queimando a cabeça com esse projeto que to quase deixando de lado ja kk
speedluk- Avançado
- PONTOS : 2676
REPUTAÇÃO : 29
Idade : 32
Respeito as regras :
Re: [RESOLVIDO] Como faço uma seta na direção do inimigo?
Continua sem explicar direito...
Mas presumindo que seu inimigo e player seja 3D, você pega a posição de cada um deles em relação a tela, calcula a direção subtraindo as duas posições, e usa o Mathf.Atan2 pra calcular o ângulo que o sprite da seta precisa girar.
Aqui tem um exemplo de como funciona
https://drive.google.com/file/d/1Z1kL4Qy4xlvQseL28QMKk2ZVn_2PNky8/view?usp=sharing
Pra quem vier depois e quiser só o código, é basicamente isso aqui:
Deixei uma lista de Inimigos, pois se quiser jogar mais de um, ele já mostra o mais próximo...
Mas presumindo que seu inimigo e player seja 3D, você pega a posição de cada um deles em relação a tela, calcula a direção subtraindo as duas posições, e usa o Mathf.Atan2 pra calcular o ângulo que o sprite da seta precisa girar.
Aqui tem um exemplo de como funciona
https://drive.google.com/file/d/1Z1kL4Qy4xlvQseL28QMKk2ZVn_2PNky8/view?usp=sharing
Pra quem vier depois e quiser só o código, é basicamente isso aqui:
- Código:
using System.Collections.Generic;
using UnityEngine;
public class SetaInimigo : MonoBehaviour
{
public RectTransform seta;
public List<Transform> inimigos;
public Transform player;
private Transform inimigoEmFoco;
private void LateUpdate()
{
inimigoEmFoco = inimigos.Count > 1 ? EncontrarInimigoMaisProximo() : inimigos[0];
Vector3 posicaoDoInimigoNaTela = Camera.main.WorldToScreenPoint(inimigoEmFoco.position);
Vector3 posicaoDoPlayerNaTela = Camera.main.WorldToScreenPoint(player.position);
Vector3 direcaoInimigo = (posicaoDoPlayerNaTela - posicaoDoInimigoNaTela).normalized;
float anguloSeta = Mathf.Atan2(direcaoInimigo.y, direcaoInimigo.x) * Mathf.Rad2Deg + 90;
seta.position = posicaoDoPlayerNaTela;
seta.rotation = Quaternion.Euler(0, 0, anguloSeta);
}
private Transform EncontrarInimigoMaisProximo()
{
float menorDistancia = float.MaxValue;
Transform inimigo = inimigos[0];
foreach (Transform t in inimigos)
{
float distanciaPlayerInimigo = Vector3.Distance(player.position, t.position);
if ( distanciaPlayerInimigo < menorDistancia)
{
inimigo = t;
menorDistancia = distanciaPlayerInimigo;
}
}
return inimigo;
}
}
Deixei uma lista de Inimigos, pois se quiser jogar mais de um, ele já mostra o mais próximo...
Fagner- Moderador
- PONTOS : 4442
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: [RESOLVIDO] Como faço uma seta na direção do inimigo?
Opa vou tentar usar esse código
porque o que to tentando é fazer a seta que fica em volta da minha espera ficar mirando o outro player, é um projeto 2.5D
mas de qualquer forma muito obrigado vou tentar usar esse ou meter alguma gambiarra XD
porque o que to tentando é fazer a seta que fica em volta da minha espera ficar mirando o outro player, é um projeto 2.5D
mas de qualquer forma muito obrigado vou tentar usar esse ou meter alguma gambiarra XD
speedluk- Avançado
- PONTOS : 2676
REPUTAÇÃO : 29
Idade : 32
Respeito as regras :
Tópicos semelhantes
» Como faço para atirar a bola na mesma direção que aponta a seta direcional?
» [RESOLVIDO] Como faço inimigo em muiltiplayer cooperativo?
» [RESOLVIDO] Como faço pro inimigo dar dano no personagem (jogo 2D de plataforma)
» [RESOLVIDO] Ativação de objetos de acordo com a direção do inimigo
» Como faço pro personagem correr na direção da câmera para Android
» [RESOLVIDO] Como faço inimigo em muiltiplayer cooperativo?
» [RESOLVIDO] Como faço pro inimigo dar dano no personagem (jogo 2D de plataforma)
» [RESOLVIDO] Ativação de objetos de acordo com a direção do inimigo
» Como faço pro personagem correr na direção da câmera para Android
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos