Центрирование игрового объекта с использованием информации о попадании raycast - PullRequest
0 голосов
/ 10 января 2019

Я строю пройденный путь, который проверяется игровым объектом (капсулой), используя raycast, направленный вниз, каждый куб имеет направление для правильного перемещения капсулы. Проблема в том, что капсула движется сразу же, когда лучевая передача попадает в куб, поэтому капсула движется по краю, но по центру.

Вот код, который я использую

RayDirection = (direction) => new Ray(transform.position, direction);

if (Physics.Raycast(RayDirection(-transform.up), out RaycastHit hit, 1.5f, 1 << 9))
{
    switch (hit.transform.GetComponent<Path>().path)
    {
        case Path.Forward:
            transform.position += Vector3.forward / 50;
            break;
        case Path.Back:
            transform.position += Vector3.back / 50;
            break;
        case Path.Right:
            transform.position += Vector3.right / 50;
            break;
        case Path.Left:
            transform.position += Vector3.left / 50;
            break;
    }
}

1 Ответ

0 голосов
/ 10 января 2019

Вместо того, чтобы элементы пути содержали направление, вы могли бы иметь место выхода. Это может быть установлено в конструкторе пустым объектом или вычислено при инициализации объекта пути.

Тогда в вашем ударе raycast вы можете получить это место выхода и переместить своего персонажа в этом направлении.

Пока вы это делаете, похоже, вы используете "/ 50", чтобы замедлить движение. Это может быть сделано путем добавления переменной скорости (в метрах в секунду) к персонажу. Чтобы переместить персонажа, умножьте направление движения * Speed ​​* Time.DeltaTime (чтобы учесть разные частоты кадров).

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