Магазин 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
сохранит свое правильное значение.