Files
Cielonos/Assets/Scripts/MainGame/Characters/Automata/AI/Conditionals/CheckAttribute.cs
SoulliesOfficial f26f9fd374 爆更
2026-03-20 12:07:44 -04:00

52 lines
1.6 KiB
C#

using Opsive.BehaviorDesigner.Runtime.Tasks;
using Opsive.BehaviorDesigner.Runtime.Tasks.Conditionals;
using Opsive.GraphDesigner.Runtime.Variables;
using Opsive.Shared.Utility;
using UnityEngine;
namespace Cielonos.MainGame.Characters.AI
{
[Category("Cielonos")]
[Description("检查一个属性是否满足条件")]
public class CheckAttribute : AutomataConditionalBase
{
private AttributeSubmodule attributeSm;
public string attributeName;
public bool isBiggerThan;
public SharedVariable<float> biggerThanValue;
public bool isSmallerThan;
public SharedVariable<float> smallerThanValue;
public bool isEqual;
public SharedVariable<float> equalValue;
private float tolerance = 1e-5f;
public override void OnAwake()
{
base.OnAwake();
attributeSm = self.attributeSm;
}
public override TaskStatus OnUpdate()
{
float attributeValue = attributeSm[attributeName];
if (isBiggerThan && attributeValue <= biggerThanValue.Value)
{
return TaskStatus.Failure;
}
if (isSmallerThan && attributeValue >= smallerThanValue.Value)
{
return TaskStatus.Failure;
}
if (isEqual && Mathf.Abs(attributeValue - equalValue.Value) > tolerance)
{
return TaskStatus.Failure;
}
return TaskStatus.Success;
}
}
}