Код: Выделить всё
public class PlayerMovement : MonoBehaviour
{
public static PlayerMovement Instance { get; private set; }
private PlayerInput playerInput;
public Vector2 inputVec;
public bool canMove = true;
void FixedUpdate()
{
if (!canMove)
{
inputVec = Vector2.zero;
return;
}
rb2D.MovePosition(rb2D.position + inputVec * moveSpeed * Time.fixedDeltaTime);
}
public void OnMove(InputAction.CallbackContext context)
{
if (context.performed)
inputVec = context.ReadValue();
else if (context.canceled)
inputVec = Vector2.zero;
}
}
Проблема
Когда игрок входит в комнату, я отключаю движение (
Код: Выделить всё
canMove = falseПосле завершения телепортации я снова включаю движение с помощью (
Код: Выделить всё
canMove = trueНа этом этапе я ожидаю, что игрок немедленно возобновит движение, если клавиша все еще удерживается нажатой.
Вместо этого игрок остается полностью неподвижным.
Движение возобновляется только после того, как игрок отпускает клавишу движения и нажимает ее снова.
Вопрос
Есть ли рекомендуемый вариант как справиться с этой ситуацией?
Я чувствую, что состояние ввода каким-то образом «теряется», пока canMove имеет значение false, но я не уверен, как его правильно восстановить или повторно синхронизировать.
Заранее спасибо!
Подробнее здесь: https://stackoverflow.com/questions/798 ... ling-input
Мобильная версия