【发布时间】:2018-11-25 04:33:59
【问题描述】:
所以在我的脑海中,我确信有办法做到这一点,但我似乎无法弄清楚。这是一个非常具体的问题,我很难在互联网搜索中找到答案。
我有一个对象,我想平滑地跟随我的鼠标,而不是捕捉到它,所以我正在使用 Vector3.movetowards:
void Update () {
mousePos = camera.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, camera.nearClipPlane));
targetPos = new Vector3(mousePos.x, GetHeight(mousePos.x), PaddlePosition.z);
transform.position = Vector3.MoveTowards(transform.position, targetPos, moveSpeed);
}
private float GetHeight(float xCoordinate){
float height = Mathf.Abs(xCoordinate) * heightDeviation + PaddlePosition.y;
return height;
}
基本上,当它向右或向左移动时,它会根据鼠标 x 坐标离 0 的距离略微向上移动。这部分有效。
问题是,如果鼠标从一侧快速移动到另一侧,由于 vector3.movetowards 的工作原理,我最终会得到对象在 y 轴上遵循与预期不同的路径。我想保持在 x 轴上的平滑、略微延迟的运动,但始终将 y 轴锁定到由 GetHeight() 生成的坐标。
【问题讨论】:
标签: unity3d