Unity物理系统笔记
raycastHit.transform返回的对象到底™是什么?
一开始我以为RaycastHit.transform是命中的碰撞体的根对象,如果给人物的chest加碰撞体,射线命中了这个碰撞体,Debug.Log(hit.transform)输出的是这个人物的名字
RaycastHit.collider是命中的碰撞体,Debug.Log(hit.collider)输出的是碰撞到的部位的名字。
2024.4.29今天又发现_hit.transform打印的是身体部位的名称。(后来调查发现是因为当时在使用布娃娃,身体部位挂有刚体)
2024.7.27今天又发现_hit.transform打印的是人物的名称。(这是因为骨骼没挂刚体)
2024.8.15
今天发现_hit物体的父级如果没有刚体,_hit.transform就是它自己,如果有刚体,就是它父级。这™是什么逻辑。
结论:_hit.transform返回的是它挂有刚体的最低级父级,也就是collider向上找找到的第一个刚体的对象。
Physics.Raycast能检测2d碰撞体吗?
不能
从多个2D碰撞体重叠的区域射线检测能检测到哪个?
默认情况下射线检测会返回Z轴值最小的碰撞体对象。这是由于2D物理系统在Z轴方向上仍存在深度排序的影响,尽管2D游戏主要使用X/Y轴坐标。z轴相同时结果不可预测。