Триггеры Unity C # Функции в движении - PullRequest
0 голосов
/ 02 октября 2018

Я создаю fps-игру в единстве и решил не использовать включенный скрипт First Person Controller, чтобы уменьшить сложность.Объект камеры будет постоянно установлен в положение игроков и может вращаться.Я создал скрипт, содержащий следующий код для движения:

float v = Input.GetAxis("Vertical");
float h = Input.GetAxis("Horizontal");

Vector2 rotation = new Vector2(
    Mathf.Cos(cam.transform.eulerAngles.y * deg2rad), (Mathf.Sin(cam.transform.eulerAngles.y * deg2rad))
);

rb.velocity = (
    new Vector3(
        (-rotation.x * h * speed) + (rotation.y * v * speed),
        rb.velocity.y,
        (-rotation.y * h * speed) + (-rotation.x * v * speed)
    )
);

Когда я тестирую игру, движение будет правильным вдоль оси x в обоих направлениях, но это необычно, когда вращение игрока у становитсячто-то иное, чем выравнивание по оси абсцисс (например, перемещение игрока назад приведет к его перемещению вперед и обратно).

Я открыт для альтернативы, кроме использования функций триггера для движения, так как яуже использовали transform.forward и transform.right, но они не работали полностью.

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Вероятно, возникшая у вас проблема связана с тем, что sin и cos не могут самостоятельно определить, в каком «квадранте» они находятся. Например, угол 30 градусов такой же, как угол 150 градусов, насколькоГрех обеспокоен.

Это видео является быстрым и хорошим объяснением проблемы:

https://www.youtube.com/watch?v=736Wkg8uxA8

0 голосов
/ 02 октября 2018

Во-первых, я бы сказал, что если вы не собираетесь изучать триггерные и геометрические функции, вам не следует изобретать велосипед.Как вы заявили, вы хотите создать игру FPS, поэтому вам действительно следует использовать сценарии и префабы, созданные другими, чтобы разрешить создание вашей игры.

Если вы не хотите использовать встроенный FPSСкрипт контроллера Я бы порекомендовал использовать бесплатный пакет активов под названием 3rdPerson + Fly.Поначалу он кажется немного сложным, однако вы узнаете о состояниях и способах стекирования / режимах, что даст вам гораздо более быстрый результат, чем создание с нуля.Вы также получите гибкость и открытость, которые идут с не встроенным пакетом.Таким образом, вы можете при желании взглянуть на внутреннюю работу или просто построить поверх нее.Не поддавайтесь синдрому NIH (не изобретено здесь), а встаньте на плечи гигантов:)

Удачи!

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