Меняются ли единицы измерения Unity 2D Transform.Position между сборками? - PullRequest
0 голосов
/ 26 апреля 2020

Я собрал небольшое репо Git, чтобы поделиться с вами некоторыми сценариями из Unity 2D-платформера, над которым я работал. Я написал базовый элемент управления движением c WASD в скрипте Movement.cs (в разделе Сценарии / Персонаж в репо), и он работает очень хорошо. Он делает все, что мне нужно, и, хотя это основа c, я намереваюсь немного улучшить его в ходе разработки игры. Тем не менее, я заметил, что каждый раз, когда я строю игру, каждая движущаяся сущность движется с большей скоростью. «AI» (да, я использую термин очень свободно), который я запрограммировал на врагов, таких как Chompas и BadBirds, кажется слишком быстрым или слишком медленным, как и управляемые пользователем движения и анимированные пузыри при включении. ,

Теперь, я думаю, я проследил это до того, как я делаю переводы; Я добавляю векторы в Transform.Position всякий раз, когда мне нужно переместить объект или объект. Эти векторы принимают значения с плавающей точкой в ​​качестве своих параметров, и, поскольку я не совсем понимаю, что представляют собой эти значения, я чувствую, что, возможно, именно в этом и заключается проблема. Являются ли эти значения расстояния репрезентативными для некоторой динамической системы измерений, которая может изменяться между сборками? Если так, как я могу стандартизировать мои расстояния? Я полностью не в курсе? Лол. Любая помощь очень ценится.

Чтобы быть совершенно ясным, эта проблема возникает каждый раз, когда я нажимаю на игру, независимо от того, были ли внесены изменения. Еще раз спасибо!

Git репо

1 Ответ

0 голосов
/ 27 апреля 2020

Попробуйте умножить свое движение на Time.deltaTime.
Если вы этого не сделаете (что на вас не похоже), то все ваши объекты GameObjects будут двигаться с непоследовательной скоростью. Причина этого в том, что void Update () get вызывается один раз в каждом кадре, а количество кадров, которые рисуются каждую секунду, является переменным (иногда ваша игра будет работать немного быстрее, чем в другое время), и поэтому ваша скорость будет переменной если вы не умножите его на Time.deltaTime (Time.deltaTime - количество времени, прошедшее с последнего кадра, см. документацию )
Другой вариант - использовать встроенную физику Unity. система с FixedUpdate (), которая вызывается с фиксированной скоростью.
Я бы настоятельно рекомендовал следовать онлайн-учебникам, чтобы узнать, как сделать платформерный контроллер et c., например this one. Это поможет вам научиться хорошим практикам и избегать распространенных ошибок.

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