您的位置:首页 > 移动开发 > Unity3D

unity 在鼠标点击位置生成物体

2017-05-03 18:27 841 查看
先上代码吧:

if (Input.GetMouseButtonUp (0)) {
if (EventSystem.current.IsPointerOverGameObject ()) {
Debug.Log ("touch area is UI");
}
else{
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast (ray, out hit)) {
Debug.Log (hit.point);
GameObject point= GameObject.Instantiate (pointPrefab, hit.point, transform.rotation)as GameObject;
}
}
}

实现的功能是在鼠标点击的位置在场景中生成物体。
这里面有几个坑:

1.由于我的场景里面有UI空间,当用户点击button时,不应该生成物体,所以添加判断代码:

if (EventSystem.current.IsPointerOverGameObject ());

2.最早判断鼠标点击时用的判断语句是Input.GetMouseButton(0),结果每点击一次会生成好多个物体,是要鼠标按下就会一直生成,所以就改成了Input.GetMouseButtonUp(0),只有当鼠标左键松开时才会生成物体。

3.如果直接在mousePosition生成物体,则其实是在屏幕上打点,获取到的坐标是摄像机显示画面的坐标,左下时(0,0),右上是(1,1)。所以使用发射射线的方式,点击的点投射到场景中,获取到他的世界坐标。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: