Newer
Older
Dreamsturbia-Project-IADE-Unity3D / Assets / Scripts / AI / Navmesh / Conditions / TargetLookingCondition.cs
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. [CreateAssetMenu(menuName ="Finite State Machine/Condition/Target Looking")]
  5. public class TargetLookingCondition : Condition
  6. {
  7. public int maxDistance;
  8. public bool inverse;
  9. protected override bool Test(FiniteStateMachine fsm)
  10. {
  11. Transform target;
  12. Transform caster;
  13. if (!inverse)
  14. {
  15. target = fsm.target;
  16. caster = fsm.transform;
  17. } else
  18. {
  19. target = fsm.transform;
  20. caster = fsm.target;
  21. }
  22. if (target != null && caster != null)
  23. {
  24. Ray newRay = new Ray(caster.position + (caster.forward * 2),Vector3.Normalize(target.position - caster.position));
  25. RaycastHit hit;
  26. if (Physics.Raycast(newRay, out hit, maxDistance))
  27. // if (Physics.Linecast(fsm.transform.position + (fsm.transform.forward * 2),fsm.target.position,out hit) && hit.distance <= maxDistance)
  28. {
  29. return (hit.collider.transform == target);
  30. } else
  31. {
  32. return false;
  33. }
  34. }
  35. return false;
  36. }
  37. }