您的位置:首页 > 产品设计 > UI/UE

NGUI在3D场景中点击穿透解决办法

2014-10-23 23:22 288 查看
参考资料:

1:http://www.unitymanual.com/thread-22018-1-1.html

2:http://blog.163.com/hongwei_benbear/blog/static/11839529120135181619944/

3:http://forum.exceedu.com/forum/forum.php?mod=viewthread&tid=33092&extra=page%3D1

今天终于碰到了 资料1 里所说的点透问题(刚开始开到的时候没明白什么意思),重新再看了一下,又了解了一下相关知识(UICamera),今天又学到东西了。

基本知识上面参考资料里的都一样,只是根据我的实际问题总结汇总了一下。

问题:

1。当点击UIButton时,鼠标会透过button点到地面,人物会移动;

2。点击UIbutton弹出背包弹窗,点击弹窗边缘,人物也会移动。

解决办法:

1.给所有NGUI 物体对象都添加BoxCollider,并勾选 isTrigger,这样才能触发碰撞;

2.添加一个全局类 在Update()里 时时 检测碰撞,代码如下:

void Update()
{
if(HitTestUI())
{
//如果鼠标碰到了NGUI对象,则人物不能移动
}
}
private bool HitTestUI()
{
/********以下两种判读都可以*******/
//如果在主Camer上也挂一个UICamera,这两种判读会一直返回真(为什么呢???)

//如果有碰到NGUI对象,返回真
if(UICamera.hoveredObject != null) { return true; }

print("UICamera.Raycast___" + UICamera.Raycast(Input.mousePosition));
//如果从UICamer到当前鼠标位置的射线碰到了NGUI对象,返回真
//if(UICamera.Raycast(Input.mousePosition)) { return true; }

return false;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: