Игрок не возобновляет движение после повторного включения вводаC#

Место общения программистов C#
Anonymous
Игрок не возобновляет движение после повторного включения ввода

Сообщение Anonymous »

Это мой скрипт PlayerMovement, использующий систему ввода Unity.

Код: Выделить всё

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 используется для временного отключения движения игрока во время диалога с NPC, телепортации или анимации кат-сцены.
Проблема
Когда игрок входит в комнату, я отключаю движение (

Код: Выделить всё

canMove = false
) и телепортирую игрока на новую карту.
После завершения телепортации я снова включаю движение с помощью (

Код: Выделить всё

canMove = true
).
На этом этапе я ожидаю, что игрок немедленно возобновит движение, если клавиша все еще удерживается нажатой.

Вместо этого игрок остается полностью неподвижным.
Движение возобновляется только после того, как игрок отпускает клавишу движения и нажимает ее снова.
Вопрос
Есть ли рекомендуемый вариант как справиться с этой ситуацией?
Я чувствую, что состояние ввода каким-то образом «теряется», пока canMove имеет значение false, но я не уверен, как его правильно восстановить или повторно синхронизировать.

Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/798 ... ling-input

Вернуться в «C#»