如何锁定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;}
}
}
答案 0 :(得分:0)
也许你仍然在寻找答案,但这可能会让其他人感到疑惑。
我做了一个角色以ClickToMove方式移动的游戏。我是怎么做到的。我的游戏是3D,所以你可能需要稍微调整一下。
我们存储我们点击的点,它属于我的场景的Floor(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);
希望有所帮助,
最重要的是,如果你想为你的角色设置动画,我会有代码。
不要犹豫要求更多,
BRO