Я пытаюсь выяснить, как лучше всего помешать игроку проходить сквозь стены и другие объекты? - PullRequest
0 голосов
/ 23 октября 2019

Я могу придумать, какие объекты я буду использовать в игре, добавить их в коробочный коллайдер или сетчатый коллайдер и начать их настройку. Или я мог бы использовать raycast и определить расстояние от объектов, через которые я хочу пройти? Это логика, чтобы использовать расчет расстояния с raycast?

void FixedUpdate()
{
    Vector3 direction = new Vector3(transform.position - lastPosition);
    Ray ray = new Ray(lastPosition, direction);
    RaycastHit hit;
    if (Physics.Raycast(ray, hit, direction.magnitude))
    {
        // Do something if hit
    }

    this.lastPosition = transform.position;
}

Не уверен, что это правильный сценарий для проигрывателя. Может быть, нужно использовать слой? Но логика заключается в том, что если игрок находится, например, на расстоянии 0,3f от объекта, игрок перестанет двигаться вперед.

1 Ответ

1 голос
/ 23 октября 2019

Используя единство, вы на самом деле не хотите делать что-то из этого кода, вместо этого у вас будет компонент RigidBody или RigidBody2D на вашем "плеере", а затем бокс-коллайдер или коллайдер сетки (или2d версии тех) на ваших объектах столкновения.

Это будет обрабатывать все столкновения и останавливать игрока, когда он ударяет по этому объекту.

Еще один совет, когда вы обрабатываете столкновения в бэкэнде. не хочу использовать FixedUpdate, так как если объект движется достаточно быстро, он будет проходить через коллайдер между обновлениями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...