#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
учитывать, чтобы быть независимыми от частоты кадров.