我正在尝试创建一个像部落冲突的等距游戏。我创建了一个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;
}
答案 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;
}
}
您可以使用现有的地面或曲面,也可以使用物体移动的任何物体,将图层名称更改为地面。请注意,地面必须有对撞机。