团结2d点击即可行走
本文关键字:2d 团结 | 更新日期: 2023-09-27 18:25:13
- 速度取决于从对象到单击的距离。如何解决
-
如何锁定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;} } }
也许你仍在寻找答案,但这可能会帮助其他人也有同样的疑问。
我做了一个游戏,角色用点击移动的方式移动。我是这样做的。我的游戏是3D的,所以你可能需要调整一下。
我们存储我们命中的点,它属于我的场景的楼层(floorHit)。在我的课的顶部,我声明了一个Vector3-toGo。我的球员有一个固定的身体,我朝着它应该移动的点旋转。然后使用MoveForward(从、到、速度);
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调用MoveForward:
transform.position = Vector3.MoveTowards (transform.position, toGo, speed * Time.deltaTime);
希望能有所帮助,
最重要的是,如果你想为你的角色设置动画,我有代码。
不要犹豫,要求更多,
bRo