C# 使用OnControllerColliderHit()检测与CharacterController发生多个冲突时的特定冲突

C# 使用OnControllerColliderHit()检测与CharacterController发生多个冲突时的特定冲突,c#,unity3d,C#,Unity3d,我试图让我的角色在与梯子碰撞时从行走运动切换到攀爬运动。我使用了OnControllerColliderHit()函数来检测冲突,因为我正在为我的角色使用CharacterController 问题是,当我与梯子碰撞时,角色仍与平面碰撞,因此它不会切换到攀爬移动。相反,它只是停留在行走运动中。那么,当CharacterController发生多个冲突时,如何检测特定冲突?您的问题不太清楚。您想确定由OnControllerColliderHit检测到的特定对象吗?当我的角色在平面上行走时(即技术

我试图让我的角色在与梯子碰撞时从
行走运动
切换到
攀爬运动
。我使用了
OnControllerColliderHit()
函数来检测冲突,因为我正在为我的角色使用CharacterController


问题是,当我与梯子碰撞时,角色仍与平面碰撞,因此它不会切换到
攀爬移动
。相反,它只是停留在
行走运动中。那么,当CharacterController发生多个冲突时,如何检测特定冲突?

您的问题不太清楚。您想确定由
OnControllerColliderHit
检测到的特定对象吗?当我的角色在平面上行走时(即技术上与平面碰撞时),我将爬升运动设置为false。当它与梯子相撞时,我将爬升动作切换为true。但是,由于角色在与梯子碰撞时仍然与地面碰撞,因此无法切换到攀爬运动。它只识别两次碰撞(与飞机碰撞、与梯子碰撞)中的一次(与飞机碰撞)。那个么我该如何判断,若飞机和梯子都发生碰撞,那个么将爬升运动切换为真,否则若只有飞机发生碰撞,那个么将禁用爬升运动@你说飞机然后降落。这些在你的评论中是相同的吗?此外,在较新版本的Unity中,您应该能够为
CharacterController
使用
OnCollisionCenter
OnCollisionExit
。你能试一下这两种方法,看看它们是否有效吗?我这样说是因为你需要一种方法来知道矿工什么时候不再接触才能正确地进行操作。我建议使用触发器(可通过的碰撞器)来实现这一点。确保碰撞机在玩家想要攀爬时始终保持接触太棘手了。@Programmer谢谢。但不幸的是,
OnCollision
事件似乎不适用于
CharacterController