Мне нужно, чтобы остановить/возобновить вращение вентилятора при нажатии определенной клавиши, так что я написал это C# код:Невозможно прочитать обновленный переменную
public bool rotationFlag = false;
void Update()
{
if(rotationFlag)
{
fan.transform.Rotate(Vector3.up, rotationAngle);
}
}
public void commuteFan()
{
rotationFlag = !rotationFlag;
}
cummuteFan()
метод вызывается при нажатии кнопки ,
переменная начинается с false, и вентилятор правильно не ратифицирует, когда я нажимаю кнопку, вызывается метод, значения переменных меняются и начинают вращаться, но если я хочу остановить его, t работать больше. debug сообщает мне, что значение правильно изменено на false в commuteFan()
, но update()
продолжает читать старое значение (true), и вентилятор не останавливается.
Вы отслеживаете значение в 'commute' и в' update'? – MVCDS
метод rotate вращает объект данного угла каждый раз, когда он вызывается, поэтому он не запускает поворот, он называется каждым кадром, поскольку он помещается внутри update(). Что вы имеете в виду с отслеживанием? –
Я проверил [это видео] (https://unity3d.com/pt/learn/tutorials/modules/beginner/scripting/translate-and-rotate) и отредактировал мой предыдущий комментарий. Но в видео говорится, что поворот следует использовать только в «кинематических» объектах - я не знаю, что это значит, - но я понял, что при использовании физики с объектом вы должны избегать поворота так, как вы это делали (я не знаю, это ваш случай). – MVCDS