using System.Collections; using System.Collections.Generic; using UnityEngine; [CreateAssetMenu(menuName = "AI/Action/Patrol")] public class PatrolAction : Action { public override void Act(FiniteStateMachine fsm) { if (!fsm.dic.HasKey("RoomEntity")) fsm.dic.SetValue("RoomEntity", fsm.GetComponent<RoomEntity>()); if (!fsm.dic.HasKey("PatrolDir")) fsm.dic.SetValue("PatrolDir", 1f); if (!fsm.dic.HasKey("RigidBody")) fsm.dic.SetValue("RigidBody", fsm.GetComponent<Rigidbody>()); Rigidbody rb = fsm.dic.GetValue("RigidBody") as Rigidbody; RoomEntity rE = fsm.dic.GetValue("RoomEntity") as RoomEntity; if ((Vector3.Distance(fsm.transform.position, rE.platformController.endPoints[0].transform.position) < 0.5f && (float)fsm.dic.GetValue("PatrolDir") == -1) || (Vector3.Distance(fsm.transform.position, rE.platformController.endPoints[1].transform.position) < 0.5f && (float)fsm.dic.GetValue("PatrolDir") == 1)) { fsm.dic.SetValue("PatrolDir", -(float)fsm.dic.GetValue("PatrolDir")); } rb.velocity = (float)fsm.dic.GetValue("PatrolDir") * Vector3.right; } }