概述
最近用RayCast做自由建筑系统
遇到两个平时没注意的地方。
(1)RayCast默认是可以Cast到Trigger的,我以为不会,但是实际上,是可以的,如果要屏蔽掉Trigger,设置最后一个参数为: QueryTriggerInteraction.Ignore
(2)官方给了一个Note,但是我没有注意到“Notes: Raycasts will not detect Colliders for which the Raycast origin is inside the Collider.”
这是他娘的啥意思?就是说,如果射线从Collider内部发出,那么这个Coiilder会被Ignore掉。
这条完全被我忽略掉了,白白琢磨了一个多小时。特意拿出来记录一下,省的下次再犯……
这就是我检测不到已经被占用的Slot的主要原因!!!!
真是Fuck了。
其他常见问题:
(3)RayCast可以通过层过滤,这个就很简单了,只是记录一下,想要在指定的层里面做RayCast,用 LayerMask.GetMask("Default","Buildings"),这个是支持可变参数的,也不用每次搞一个字符串数组。
(4)FPS游戏射击射线怎么搞?
Ray ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2, 0));
RaycastHit result;
if (Physics.Raycast(ray, out result, 1000, LayerMask.GetMask("Enemy")))
用Camera.main.ScreenPointToRay这个函数,创建一射线,用这个射线去RayCast即可。当然,这是没考虑弹道的激光炮,如果设计弹道,还要将弹道函数考虑进去。
最后
以上就是秀丽火龙果为你收集整理的Unity RayCast容易忽视的地方的全部内容,希望文章能够帮你解决Unity RayCast容易忽视的地方所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复