【Unity学习过程踩坑记录】使用射线检测时子弹会穿透目标
问题描述:
使用子弹射击目标,采用的是射线检测Physics.Raycast()方法。但是打出的很多子弹直接穿透目标,没有出现碰撞效果,但是仍有很低的概率命中。
解决:
在视频评论区的提示下,发现Physics.Raycast()方法中有个参数是LayerMask collisionMask,表示只选择属于该Layer的碰撞器,其他层内碰撞器忽略。我去看了一下在Bullet组件面板,果然没有将该变量选择为Enemy的所处Layer,默认为Nothing,虽然我记得我之前选了……
相关API:
bool Pyhsics.Raycast(Vector3 origin, Vector3 direction, float distance, int layerMask) bool Pyhsics.Raycast(Vector3 origin, Vector3 direction, RaycastHit out hit, float distance, int layerMask) bool Physics.Raycast(Ray ray, float distance, int layerMask) bool Physics.Raycast(Ray ray, RaycastHit out hit, float distance, int layerMask) // 当光线投射与任何碰撞器交叉时为真,否则为假。 // 其中out关键字表示将碰撞的细节信息传给hit,如获取碰撞物体的transform等信息。
这么做确实解决了问题,子弹看上去总是能击中目标。但是仍然有个疑惑,那就是在我选择Layer之前,子弹还是有可能击中敌人并摧毁,目前原因不明。
视频学习地址:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!