- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- [CreateAssetMenu(menuName = "Finite State Machine/Action/AttackMelee")]
- public class AttackAction : Action
- {
- [SerializeField] private float damage;
- [SerializeField] private float distance;
- [SerializeField] private float timerTotal;
- RaycastHit ray;
- Health hp = null;
-
- public override void Act(FiniteStateMachine fsm)
- {
-
- if (fsm.floatDictionary.GetValue("coolDown", 0) > 0)
- {
- fsm.floatDictionary.SetValue("coolDown", fsm.floatDictionary.GetValue("coolDown") - Time.deltaTime);
- }
- else
- {
- if (fsm.target != null)
- {
- fsm.transform.LookAt(fsm.target.transform.position);
- fsm.rb.velocity = Vector3.zero;
- if (Physics.Raycast(fsm.transform.position, fsm.transform.forward, out ray, Vector3.Distance(fsm.transform.position, fsm.target.transform.position)))
- {
-
- if (hp == null) ray.collider.gameObject.TryGetComponent<Health>(out hp);
- else
- {
- hp.LooseHp(damage, fsm.transform.forward);
- }
- }
- fsm.floatDictionary.SetValue("coolDown", timerTotal);
- }
- }
- }
- }