Newer
Older
Dreamsturbia-Project-IADE-Unity3D / Assets / Scripts / AI / Navmesh / Conditions / TargetLookingCondition.cs
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;
    }
}