Newer
Older
Dreamsturbia-Project-IADE-Unity3D / Assets / Scripts / AI / FSM / Actions / AttackRanged.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(menuName = "Finite State Machine/Action/Attack Ranged Enemy")]
public class AttackRanged : Action
{
    [SerializeField] private GameObject bulletPrefab;
    [SerializeField] private float bulletVelocity;
    [SerializeField] private float coolDown;
    [SerializeField] private float offSet;
    public override void Act(FiniteStateMachine fsm)
    {
        if (!fsm.floatDictionary.HasKey("shootCoolDown")) fsm.floatDictionary.SetValue("shootCoolDown", 0);
        //if (!fsm.monoDictionary.HasKey("playerController")) fsm.monoDictionary.SetValue("playerController", fsm.target.GetComponent<PlayerController>());
        if(fsm.floatDictionary.GetValue("shootCoolDown") > 0)
        {
            fsm.floatDictionary.SetValue("shootCoolDown", fsm.floatDictionary.GetValue("shootCoolDown") - Time.deltaTime);
        }
        else
        {
            fsm.floatDictionary.SetValue("shootCoolDown", coolDown);
            GameObject bullet = Instantiate(bulletPrefab, fsm.transform.position + (fsm.transform.forward * offSet), Quaternion.identity);
            bullet.GetComponent<Rigidbody>().velocity = bulletVelocity * fsm.transform.forward; 
        }

        fsm.transform.LookAt(fsm.target.transform);

        
    }
}