using System; using Sirenix.OdinInspector; using SLSUtilities.FunctionalAnimation; using UnityEngine; using UnityEngine.Serialization; namespace Cielonos.MainGame.FunctionalAnimation { [Serializable] public class ChangeCollisionLayers : FuncAnimPayloadBase { [Tooltip("是否在排除这些碰撞层,若为否则表示添加(通常是加回,恢复)这些碰撞层")] [LabelText("@this.excludeSwitch ? \"isExcluding\" : \"isIncluding\"")] public bool excludeSwitch; [Tooltip("要添加或移除的碰撞层")] public LayerMask layerMask; public override void Invoke() { if (excludeSwitch) { if (character.collisionSc.useCharacterController) { character.collisionSc.characterController.excludeLayers |= layerMask; } else { character.collisionSc.mainRigidbody.excludeLayers |= layerMask; } } else { if (character.collisionSc.useCharacterController) { character.collisionSc.characterController.excludeLayers &= ~layerMask; } else { character.collisionSc.mainRigidbody.excludeLayers &= ~layerMask; } } } } }