Перетащите для перемещения в Unity и удерживайте касание, чтобы продолжать двигаться в том же направлении

#c# #unity3d #mobile #touch

#c# #unity3d #Мобильный #коснитесь

Вопрос:

Итак, я пытаюсь написать код для перемещения игрока с помощью перетаскивания по экрану, но я хочу, чтобы игрок продолжал двигаться в том же направлении, когда я держу палец, и останавливается только тогда, когда я убираю палец. я написал этот код, и игрок перемещается, но он останавливается, когда я держу палец.

 void Update()
{
    if (Input.touchCount > 0)
    {
        touch = Input.GetTouch(0);

        if (touch.phase == TouchPhase.Moved)
        {
            transform.position = new Vector3(
                transform.position.x   touch.deltaPosition.x * speedModifier,
                transform.position.y,
                transform.position.z   touch.deltaPosition.y * speedModifier);
        }
    }
}
 

Комментарии:

1. Как быстро должен двигаться ваш объект? В каком направлении? Если вы удерживаете касание, его не будет deltaPosition 😉

Ответ №1:

Если я вас правильно понял, вы могли бы сохранить последнее движение салфетки и использовать его также для стационарного касания, например,

 Vector2 currentDirection;

void Update()
{
    if (Input.touchCount > 0)
    {
        touch = Input.GetTouch(0);

        switch (touch.phase)
        {
            case TouchPhase.Moved:
                currentDirection = touch.deltaPosition * speedModifier;
                transform.position  = currentDirection;
                break;

           case TouchPhase.Stationary:
               transform.position  = currentDirection;
               break;

           default:
               currentDirection = Vector2.zero; 
               break;
        }
    }
}
 

Таким образом, он продолжает двигаться с последней скоростью прокрутки.

Однако, в целом, вы также должны Time.deltaTime учитывать, чтобы быть независимыми от частоты кадров.