您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
49 行
936 B
49 行
936 B
using UnityEngine;
|
|
using UOP1.StateMachine;
|
|
using UOP1.StateMachine.ScriptableObjects;
|
|
|
|
|
|
public enum ZoneType
|
|
{
|
|
Alert,
|
|
Attack
|
|
}
|
|
|
|
[CreateAssetMenu(fileName = "PlayerIsInZone", menuName = "State Machines/Conditions/Player Is In Zone")]
|
|
public class PlayerIsInZoneSO : StateConditionSO
|
|
{
|
|
public ZoneType zone;
|
|
|
|
protected override Condition CreateCondition() => new PlayerIsInZone();
|
|
}
|
|
|
|
public class PlayerIsInZone : Condition
|
|
{
|
|
|
|
private Critter _critter;
|
|
|
|
public override void Awake(StateMachine stateMachine)
|
|
{
|
|
_critter = stateMachine.GetComponent<Critter>();
|
|
}
|
|
|
|
protected override bool Statement()
|
|
{
|
|
bool result = false;
|
|
if (_critter != null)
|
|
{
|
|
switch (((PlayerIsInZoneSO)OriginSO).zone)
|
|
{
|
|
case ZoneType.Alert:
|
|
result = _critter.isPlayerInAlertZone;
|
|
break;
|
|
case ZoneType.Attack:
|
|
result = _critter.isPlayerInAttackZone;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
}
|