@Gera01
Праграмирую на С# + Uniti и немного на Python.

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

Здравствуйте! Я начал делать ботов для игры, но они когда приследуют игрока становятся не рядом с ним, а залазят внутрь его. Как исправить? Скрипт:
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;
        }

    }

   

}
  • Вопрос задан
  • 87 просмотров
Решения вопроса 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); 
        }
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
от 50 000 до 100 000 руб.
ArtMind Technologies Москва
от 140 000 до 180 000 руб.
от 30 000 до 100 000 руб.
12 дек. 2019, в 23:19
10000 руб./за проект
12 дек. 2019, в 23:04
500000 руб./за проект
12 дек. 2019, в 22:52
1000 руб./за проект