Helllo,偷看! 我正在制作移动视频游戏,但我的触摸移动系统遇到了麻烦。这是我希望它工作的方式:
https://www.youtube.com/watch?v=X5tC7y1_ARA
1)仅在X轴上移动(这里不是问题)
2)当我在屏幕上按时,该物体不应在手指的位置传送。
3)Oject应该实时地从对象的初始位置移动到对象的当前位置,而不能传送。 我这样计算对象的当前位置:
对象的当前位置=对象的当前位置+手指的当前位置-手指的初始位置
这就是我到目前为止所得到的
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Began)
{
Vector3 startPos = touch.position; //Initial Position
}
if (touch.phase == TouchPhase.Moved)
{
Vector3 movementDistance = new Vector3(touch.position.x - startPos.x, 0, 0);
Vector3 direction = Camera.main.ScreenToWorldPoint(movementDistance);
Vector3 currentPos = Camera.main.ScreenToWorldPoint(transform.position);
transform.position = new Vector3(Mathf.Clamp(currentPos.x + direction.x, -121, 121), transform.position.y, transform.position.z);
}
}
由于某种原因,这无法正常工作。该对象会传送到随机位置,并且不会像我希望的那样移动对象。
您能帮我发现我的问题吗?如果没有,您知道其他方法吗?
答案 0 :(得分:1)
了解“变量范围”-https://msdn.microsoft.com/en-us/library/ms973875.aspx
尝试一下:
Vector3 startPos;
float movementSpeed = 0.1f; // adjust this to your liking
void Update()
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Began)
{
startPos = touch.position; //Initial Position
}
if (touch.phase == TouchPhase.Moved)
{
Vector3 movementDistance = new Vector3(touch.position.x - startPos.x, 0, 0);
Vector3 direction = Camera.main.ScreenToWorldPoint(movementDistance);
transform.position = new Vector3(Mathf.Clamp(transform.position.x + movementSpeed * direction.x, -121, 121), transform.position.y, transform.position.z);
}
}
}