Unity Layerの管理について
こんにちは。ネノワヲンです。 今回は、Layer管理についてのお話です。
値の持ち方
レイヤーを、enumで管理しています。
/// <summary> /// レイヤー名と番号 /// </summary> public enum Layer { Ground = 8, Player = 9, HangObject = 10, AttackPoint = 11, Hook = 12, Enemy = 13, MiniMap = 14, PlayerFace = 15, Guide = 16, EnemyBase = 17, Goal = 18 }
unityではレイヤーはintで使うので、直接intにできるenumだと管理がしやすいです。
LayerMaskの管理
/// <summary> /// フックの衝突レイヤー /// </summary> public const int hookCol = (1 << (int)Layer.Ground | 1 << (int)Layer.HangObject | 1 << (int)Layer.AttackPoint | 1 << (int)Layer.Enemy); /// <summary> /// カメラとの障害物判定のマスク /// </summary> public const int cameraBlockCheck = ~(1 << (int)Layer.Player | 1 << (int)Layer.Hook | 1 << (int)Layer.Enemy); /// <summary> /// 敵の本体の衝突レイヤー /// </summary> public const int enemyBaseCol = (1 << (int)Layer.Ground | 1 << (int)Layer.EnemyBase);
Raycastの際に使用するMaskの値もあらかじめ格納しておくことで、管理が楽になります。