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)) // if (Physics.Linecast(fsm.transform.position + (fsm.transform.forward * 2),fsm.target.position,out hit) && hit.distance <= maxDistance) { return (hit.collider.transform == target); } else { return false; } } return false; } }