Магазин Raycast хит информация

В моей игре игрок использует виртуальный аналог, чтобы стремиться к определенному объекту, когда он выпускает аналог, персонаж должен двигаться к этому объекту. Я хочу сохранить положение этого объекта (больше похоже на направление, в котором игрок должен двигаться в зависимости от положения объекта) в переменной, но только если это было последнее, с чем столкнулся луч:

Vector3 targetPos;

RaycastHit hit;
if (Physics.Raycast (pos, dir, out hit, 10, targetLayer)) {

    Vector3 moveDir = (hit.point - transform.position).normalized;
    targetPos = moveDir;
} else {
    targetPos = Vector3.zero;   
}

Делая это targetPos Переменная всегда возвращается к нулю после освобождения аналога, даже если последний объект столкновения был этим конкретным объектом.

Изменить: Решено на основе комментария @MukeshSaini. Спасибо всем.

1 ответ

Решение

Я думаю, что вы используете raycast даже после того, как пользователь выпустил аналог, который может возвращать false для Physics.Raycast и настройка targetPos в Vector3.zero в else блок.

Вы можете поместить условие в raycast только тогда, когда пользователь использует аналог, что остановит ненужный блок else для выполнения после того, как пользователь выпустил аналог и targetPos сохранит свое правильное значение.

Другие вопросы по тегам