团结2d轻拍走路

时间:2014-10-01 20:05:26

标签: c# unity3d unity3d-2dtools

  1. 速度取决于从物体到咔嗒声的距离。 如何解决这个问题?
  2. 如何锁定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;}
        }  
    }
    

1 个答案:

答案 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