首页 文章

如何在Unity 3d中的正交相机中拖动立方体?

提问于
浏览
0

我正在尝试创建一个像部落冲突的等距游戏 . 我创建了一个Terrain,我将我的相机位置设置为(0,300,-10),旋转设置为(40,45,0)和Perspective to Orthographic . 我正在使用下面的代码来拖动一个立方体,但是当我在某个位置拖动立方体时,立方体无法显示或只有部分立方体可见 . 似乎位置(X,Y,Z)三个都在使用下面的代码进行更改 . 但我想拖动立方体就像任何自上而下的游戏像Clash of Clans一样 . 请帮我解决我的问题 .

void OnMouseDrag ()
 {        
    Vector3 mousePosition = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, 0);
    Vector3 objPosition = Camera.main.ScreenToWorldPoint (mousePosition);                            
    this.target.transform.position = objPosition;

 }

1 回答

  • 2

    你需要光线投射来解决它 . 试试这个-

    void OnMouseDrag ()
    {        
        RaycastHit hitInfo;
        bool hit = Physics.Raycast (Camera.main.ScreenPointToRay (Input.mousePosition), out hitInfo, Mathf.Infinity, 1 << LayerMask.NameToLayer ("ground")); 
        if(hit){
            this.target.transform.position = hitInfo.point;
        }                            
    }
    

    您可以使用现有的地面或曲面,也可以使用物体移动的任何物体,将图层名称更改为地面 . 请注意,地面必须有对撞机 .

相关问题