【发布时间】:2020-03-07 11:31:19
【问题描述】:
我正在尝试制作 2D 无限奔跑游戏,但滑动无法正常工作。 滑动时有明显的延迟,只有在我停止触摸并抬起手指后才会发生滑动。
如何修改脚本以使滑动更加负责并在我的手指在屏幕上时滑动?
我希望有人可以提供帮助。
void Update()
{
if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
{
startSwipePoz = Input.GetTouch(0).position;
}
if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Ended)
{
endSwipePoz = Input.GetTouch(0).position;
if (endSwipePoz.x < startSwipePoz.x && transform.position.x > -1.83f)
{
StartCoroutine(Move("left"));
}
if (endSwipePoz.x > startSwipePoz.x && transform.position.x < 1.83f)
{
StartCoroutine(Move("right"));
}
}
}
private IEnumerator Move(string flySide)
{
switch(flySide)
{
case "left":
flyTime = 0f;
startPoz = transform.position;
endPoz = new Vector3(startPoz.x - 1.83f, transform.position.y, transform.position.z);
while (flyTime < flyDuration)
{
flyTime += Time.deltaTime;
transform.position = Vector2.Lerp(startPoz, endPoz, flyTime / flyDuration);
yield return null;
}
break;
case "right":
flyTime = 0f;
startPoz = transform.position;
endPoz = new Vector3(startPoz.x + 1.83f, transform.position.y, transform.position.z);
while (flyTime < flyDuration)
{
flyTime += Time.deltaTime;
transform.position = Vector2.Lerp(startPoz, endPoz, flyTime / flyDuration);
yield return null;
}
break;
}
}
【问题讨论】:
-
为什么要使用
string参数来定义方向?我建议宁愿使用int(1 / -1) 或bool isRight(true / false) 甚至enum MoveDirection { Right, Left }!其中任何一个都比传递和比较strings更易于维护且不易出错:)
标签: android unity3d touch swipe