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

时间:2015-01-03 14:06:00

标签: unity3d drag-and-drop camera isometric orthographic

我正在尝试创建一个像部落冲突的等距游戏。我创建了一个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 个答案:

答案 0 :(得分: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;
    }                            
}

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