@Gera01
Unity, С# и больше ничего.

Почему они внутри дракона?

Здравствуйте! Я начал делать ботов для игры, но они когда приследуют игрока становятся не рядом с ним, а залазят внутрь его. Как исправить? Скрипт:
public Transform player;
    public int dist;
    public Transform enemy;
    public float RotateSpeed;
    public float SpeedMove;
    public GameObject EnAnimObj;
    private bool trig = false;


    void Update()
    {
       if (trig == false)
        {
            
            Vector3 rotation = player.position-enemy.position;
            enemy.rotation = Quaternion.Slerp(enemy.rotation, Quaternion.LookRotation(rotation), RotateSpeed * Time.deltaTime);
            enemy.transform.position += enemy.forward * SpeedMove * Time.deltaTime;
            enemy.transform.localPosition = new Vector3(transform.position.x, 0f, transform.position.z);
            enemy.transform.localRotation = new Quaternion(0f, transform.rotation.y ,0f, transform.rotation.w); 
        }
    }

    void OnTriggerEnter(Collider other)
    {
        if (other.tag == "Player")
        {
            GetComponent<Animator> ().SetTrigger ("Trigger");
            trig = true;
        }
        
    }


    void OnTriggerExit(Collider other)
    {
        if (other.tag == "Player")
        {
            GetComponent<Animator>().SetTrigger("Trigger");
            trig = false;
        }

    }

   

}
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
Griboks
@Griboks Куратор тега C#
Необходимо добавить проверку на минимальную дистанцию.
void Update()
    {
       if (trig == false)
        {
            
            Vector3 rotation = player.position-enemy.position;
            enemy.rotation = Quaternion.Slerp(enemy.rotation, Quaternion.LookRotation(rotation), RotateSpeed * Time.deltaTime);
            if(rotation.sqrMagnitude > 1)
                        enemy.transform.position += enemy.forward * SpeedMove * Time.deltaTime;
            enemy.transform.localPosition = new Vector3(transform.position.x, 0f, transform.position.z);
            enemy.transform.localRotation = new Quaternion(0f, transform.rotation.y ,0f, transform.rotation.w); 
        }
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы