我正在尝试创建一个等距游戏,例如部落冲突。我创建了一个地形,并将相机位置设置为 (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;
}
}
您可以使用现有的地面或表面,也可以在对象移动的任何位置上将图层名称更改为地面。请注意,地面必须有碰撞器。