Newer
Older
HardPoint-Project-Abertay-University-Unity3D / Assets / Scripts / FSM / MeleeEnemy / Actions / PatrolAction.cs
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;


    }
}