- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- [CreateAssetMenu(menuName ="Finite State Machine/Condition/Target Looking")]
- public class TargetLookingCondition : Condition
- {
- public int maxDistance;
- public bool inverse;
- protected override bool Test(FiniteStateMachine fsm)
- {
- Transform target;
- Transform caster;
- if (!inverse)
- {
- target = fsm.target;
- caster = fsm.transform;
- } else
- {
- target = fsm.transform;
- caster = fsm.target;
- }
- if (target != null && caster != null)
- {
- Ray newRay = new Ray(caster.position + (caster.forward * 2),Vector3.Normalize(target.position - caster.position));
- RaycastHit hit;
- if (Physics.Raycast(newRay, out hit, maxDistance))
-
- {
- return (hit.collider.transform == target);
- } else
- {
- return false;
- }
- }
- return false;
- }
- }