我有一个相对于手指位置移动精灵的功能。我的意思是手指可以触摸屏幕的任何部分并移动玩家精灵,而无需将精灵移动到手指位置。
我遇到的问题是它移动精灵的速度比实际手指位置快:
假设我的手指在 (0,0),精灵在 (10,10);我将手指在 X 轴上移动 10 个单位,我希望精灵在 (20,10) 处移动,但实际上它移动的单位比预期的要多。假设它移动到(25,10)。
我认为这与 deltaPosition 值有关。这是函数(参数中的变换是我正在移动的精灵的变换):
private Vector2 MovePlayerRelativeToFinger(Transform transform)
{
Vector2 position = transform.position;
if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved)
{
touchPosition = Input.GetTouch(0).deltaPosition;
position = new Vector2((touchPosition.x * Time.deltaTime) + transform.position.x, (touchPosition.y * Time.deltaTime) + transform.position.y);
return position;
}
else
{
return position;
}
}