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



我正在尝试创建一个等距游戏,例如部落冲突。我创建了一个地形,并将相机位置设置为 (0,300,-10),将旋转设置为 (40,45,0),将透视设置为正交。我正在使用下面的代码来拖动一个立方体,但是当我在某个位置拖动立方体时,立方体无法看到,或者只有立方体的某些部分可见。似乎位置 (X,Y,Z) 所有三个都在使用以下代码进行更改。但我想像任何自上而下的游戏一样拖动立方体,比如《部落冲突》。请帮助我解决我的问题。

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

你需要光线投射来解决它。试试这个——

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;
    }                            
}

您可以使用现有的地面或表面,也可以在对象移动的任何位置上将图层名称更改为地面。请注意,地面必须有碰撞器。

相关内容

  • 没有找到相关文章

最新更新