Files
Cielonos/Assets/Scripts/MainGame/Base/FunctionalAnimation/Payloads/ChangeCollisionLayers.cs
SoulliesOfficial 7bc1e1722c 爆更
2026-06-05 04:21:00 -04:00

47 lines
1.5 KiB
C#

using System;
using Sirenix.OdinInspector;
using SLSUtilities.FunctionalAnimation;
using UnityEngine;
using UnityEngine.Serialization;
namespace Cielonos.MainGame.FunctionalAnimation
{
[Serializable]
public class ChangeCollisionLayers : FuncAnimPayloadBase
{
public override bool IsCombatOnly => true;
[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;
}
}
}
}
}