Игрок не возобновляет движение после повторного включения ввода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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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