Задать вопрос
YugGO
@YugGO

Как в моём случаи лучше реализовать механику в Unity3D?

public class AItest : MonoBehaviour
{
    public float dis = 2;

    public Camera cam;
    public NavMeshAgent agent;

    private void Update()
    {
        if (Input.GetMouseButtonDown(1))
        {
            Ray ray = cam.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit))
            {
                if (hit.transform.CompareTag("Ground"))
                {
                    //Если дистанция будет больше "dis", то объект движется. 
                    //agent.SetDestination(hit.point);

                    //Если  дистанция будет меньше "dis", то объект не движется.
                }
            }
        }
    }
}


По этому коду понятно как двигается объект.

Но нужно кое-что реализовать - нужно дать понять объекту, что когда его дистанция с "hit.point" станет меньше "dis", он должен перестать движение.

Я долго пытался найти решение, но пока что не смог.
У кого есть идеи?
  • Вопрос задан
  • 116 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Gera01
Unity, С# и больше ничего.
Я делал через LookAt.
if (Vector3.Distance(transform.position, player.transform.position) < seeDistance) // если видит игрока
            {
                if (canRide == true)
                {
                    transform.LookAt(new Vector3(player.position.x, transform.position.y, player.position.z));
                    transform.Translate(new Vector3(0, 0, speed * Time.deltaTime)); // смотрит и двигается к игроку
                }
}

PS если помогло - поставь нравиться и отметь решением.
Ответ написан
CHIDWI
@CHIDWI
Unity3D Developer
А в чем собственно проблема? У вас в hit содержится куча данных. Например вы можете достать ее позицию в мире hit.collider.gameobject.transform.position и измерять расстояние между ней и this.gameobject.transform.position через vector3 distance или просто считая разницу.
Ответ написан
Ваш ответ на вопрос

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

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