- 速度取决于从对象到点击的距离。如何解决?
如何锁定 y 轴上的移动(点击后)?
public int speed; Vector3 position; bool go; void FixedUpdate () { if (Input.GetKey (KeyCode.Mouse0)) { go=true; Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition); RaycastHit hit; if (Physics.Raycast (ray, out hit, Mathf.Infinity)) { position = hit.point; } } ////////////////////////////////////////////////////////////////////// if(go) { Vector2 direction = position - transform.position; float targ_pos = Vector2.Distance (transform.position, position); if(targ_pos>0) { rigidbody2D.AddForce ((position - transform.position)*speed); } else {go=false;} } }
问问题
248 次
1 回答
0
也许您仍在寻找答案,但这可能会帮助其他想知道的人。
我做了一个游戏,角色以 ClickToMove 方式移动。这就是我的做法。我的游戏是 3D 的,所以你可能需要稍微调整一下。
我们存储我们命中的点,它属于我场景的地板(floorHit)。在我班的顶部,我声明了一个 Vector3 toGo。我的播放器附有一个刚体,我将它旋转到它应该移动的点。然后使用 MoveTowards(from,to,speed);
if (Physics.Raycast (camRay, out floorHit, camRayLength, floorMask)) {
Vector3 playerToMouse = floorHit.point - transform.position;
// the quaternion defines the rotation, looking through the vector
Quaternion newRotation = Quaternion.LookRotation (playerToMouse);
playerRigidbody.MoveRotation (newRotation);
toGo = floorHit.point; // We save the point we touched }
然后在 if 之外,仍然在更新函数中,我们使用我们之前保存的 toGo Vector3 调用 MoveTowards:
transform.position = Vector3.MoveTowards (transform.position, toGo, speed * Time.deltaTime);
希望有帮助,
最重要的是,如果你想为你的角色设置动画,我有代码。
不要犹豫要求更多,
兄弟
于 2014-12-19T10:24:28.713 回答