У меня есть простой, если заявление следующим образом:Неожиданное поведение от того, если оператор
if (!state.wasGroundedLastFrame && _speed.y > 0){
_newPosition.y += _speed.y * Time.deltaTime;
}
Но как вы можете видеть на изображении ниже, что он входе в блок, даже если _speed.y
меньше 0. Что может Я ошибаюсь?
Я с использованием MonoDevelop с Unity в C#
EDIT: Для дальнейшего уточнения, _speed
является частной переменной Vector3. На скриншотах ниже вы можете видеть, что значение не изменяется во время оценки состояния и в блоке. Значение вычисляется до вызова этого оператора.
Еще одна странная вещь, которую я только заметил, заключается в том, что при отсутствии пользовательского ввода это значение должно быть постоянным (-3.33); он представляет текущую скорость персонажа. Когда я создаю точку останова, в первом кадре значение обычно находится между 0 и -1. Однако во всех последующих кадрах, когда я продолжаю выполнение без удаления точки останова, значение равно -3.33, «правильное» постоянное значение.
Просьба * * полный воспроизводимый пример проблема. – Servy
Доступен ли _speed.y несколькими потоками? – Kimi
Что такое Datatype для y – user2526236