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即可。当然,这是没考虑弹道的激光炮,如果设计弹道,还要将弹道函数考虑进去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值