45 lines
1.4 KiB
C#
45 lines
1.4 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |