Unity RayCast容易忽视的地方

最近用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)