在官方资源商店找素材的时候看了一下作者的脚本里关于“人物是否在地面上、是否碰到了墙壁”的检测是如何实现的。(人物只能跳一次,在贴到墙上的时候会播放滑墙动画)。
作者在人物身上挂了五个只带有碰撞器和相关脚本的子物体,分别是以人物为中心在周身围成矩形的四个,和人物脚底下名为“GroundSensor”的一个。它们挂的都是同一个脚本。
在脚本中,每个碰撞器触碰到物体的时候,就会把名为m_ColCount的int变量+1,如果离开物体,则把这个值-1,随后在名为State的返回值bool类型函数中,返回m_ColCount>0的判断结果。
在操作人物的主函数中,判断是否在地面上的操作:
判断是否播放滑墙动画的操作:
m_animator.SetBool("WallSlide", (m_wallSensorR1.State() && m_wallSensorR2.State()) || (m_wallSensorL1.State() && m_wallSensorL2.State()));