CollisionFlagsはCharacterController.Moveで返されるビットマスクです。
キャラクターとオブジェクトの衝突がどの面で起こったかを知ることが出来ます。
function Update () {
var controller : CharacterController = GetComponent(CharacterController);
if (controller.collisionFlags == CollisionFlags.None)
print("Free floating!");
if (controller.collisionFlags & CollisionFlags.Sides)
print("Touching sides!");
if (controller.collisionFlags == CollisionFlags.Sides)
print("Only touching sides, nothing else!");
if (controller.collisionFlags & CollisionFlags.Above)
print("Touching ceiling!");
if (controller.collisionFlags == CollisionFlags.Above)
print("Only touching ceiling, nothing else!");
if (controller.collisionFlags & CollisionFlags.Below)
print("Touching ground!");
if (controller.collisionFlags == CollisionFlags.Below)
print("Only touching ground, nothing else!");
}
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { void Update() { CharacterController controller = GetComponent<CharacterController>(); if (controller.collisionFlags == CollisionFlags.None) print("Free floating!"); if (controller.collisionFlags & CollisionFlags.Sides) print("Touching sides!"); if (controller.collisionFlags == CollisionFlags.Sides) print("Only touching sides, nothing else!"); if (controller.collisionFlags & CollisionFlags.Above) print("Touching ceiling!"); if (controller.collisionFlags == CollisionFlags.Above) print("Only touching ceiling, nothing else!"); if (controller.collisionFlags & CollisionFlags.Below) print("Touching ground!"); if (controller.collisionFlags == CollisionFlags.Below) print("Only touching ground, nothing else!"); } }
import UnityEngine import System.Collections public class ExampleClass(MonoBehaviour): def Update() as void: controller as CharacterController = GetComponent[of CharacterController]() if controller.collisionFlags == CollisionFlags.None: print('Free floating!') if controller.collisionFlags & CollisionFlags.Sides: print('Touching sides!') if controller.collisionFlags == CollisionFlags.Sides: print('Only touching sides, nothing else!') if controller.collisionFlags & CollisionFlags.Above: print('Touching ceiling!') if controller.collisionFlags == CollisionFlags.Above: print('Only touching ceiling, nothing else!') if controller.collisionFlags & CollisionFlags.Below: print('Touching ground!') if controller.collisionFlags == CollisionFlags.Below: print('Only touching ground, nothing else!')