使用 CharacterController.Move 方法移動角色時,可搭配以下判斷得知膠囊體接觸其他 collider 的情形。
CharacterController controller = GetComponent<CharacterController>();
if (controller.collisionFlags == CollisionFlags.None){ }
// 完全沒碰到 if ((controller.collisionFlags & CollisionFlags.Sides) != 0){ }
// 側邊有碰到 if (controller.collisionFlags == CollisionFlags.Sides){ }
// 只有側邊碰到 if ((controller.collisionFlags & CollisionFlags.Above) != 0){ }
// 上方有碰到(天花板) if (controller.collisionFlags == CollisionFlags.Above){ }
// 只有上方碰到(天花板) if ((controller.collisionFlags & CollisionFlags.Below) != 0){ }
// 下方有碰到(地板) if (controller.collisionFlags == CollisionFlags.Below){ }
// 只有下方碰到(地板)
建議延伸閱讀:
>>
CharacterController.Move 角色操控範例
>>
unity Collision Trigger 碰撞偵測與觸發對應表
>>
unity C# 語法教學入門
>>
Unity Script 常用語法教學(unity課程入門學習筆記)