Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

174
Visualizações
AI sigue y gira hacia el jugador

Tengo un problema con mi script, quiero que mi enemigo me siga y gire hacia el jugador. mientras se mueve. Parece funcionar bien, pero cuando mi jugador gira 180 en y, mi enemigo parece retroceder mucho (su posición), y solo cuando mi jugador vuelve a su rotación normal, el enemigo parece volver. ¿Qué hice mal?

 public class EnemyTesting : MonoBehaviour { public GameObject player; public float speed = 1.5f; public float turnRate; private void Update() { Vector3 toTarget = player.transform.position - transform.position; float angleToTarget = Vector3.Angle(transform.forward, toTarget); Vector3 turnAxis = Vector3.Cross(transform.forward, toTarget); transform.RotateAround(transform.position, turnAxis, Time.deltaTime * turnRate * angleToTarget); transform.Translate(toTarget * speed * Time.deltaTime); }

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Por "retrocede" entiendo rotación, no posición. Creo que tu problema es con Vector3.Angle. Verifique en los documentos que la función devuelve el menor de los dos ángulos posibles entre los dos vectores. En el caso de que el ángulo sea mayor a 180, debes manejar eso en el código para hacer que tu enemigo gire en consecuencia.

Editar: creo que eso se produce por el espacio de rotación de la función de traducción. Establezca Space.World en los argumentos transform.Translate Pruebe esto:

 private void Update() { Vector3 toTarget = player.transform.position - transform.position; transform.LookAt(player.transform.position); transform.Translate(toTarget * speed * Time.deltaTime, Space.World); }
over 4 years ago · Santiago Trujillo Relatório

0

Podrías usar Quaternion.RotateTowards para rotar lentamente la dirección del enemigo hacia el jugador.

Este comportamiento también hace que el enemigo camine hacia su vector de avance, en lugar de directamente hacia el jugador.

 var towardsPlayer = player.transform.position - transform.position; transform.rotation = Quaternion.RotateTowards( transform.rotation, Quaternion.LookRotation(towardsPlayer), Time.deltaTime * turnRate ); transform.position += transform.forward * speed * Time.deltaTime;
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda