void Start() { positivemaxTargetingRotation = 180 + maxTargetingRotationDifference; negativemaxTargetingRotation = 180 - maxTargetingRotationDifference; Invoke("Explode", fuse); uIArrows = GameObject.Find("UI Camera").GetComponent <UIArrows>(); rb = GetComponent <Rigidbody>(); InvokeRepeating("MissileTargetFinding", 0, 0.1f); targ = uIArrows.GetClosestToCenter(); currentTarget = targ.ForTargeting; Vector3 position = transform.position; targeter.transform.LookAt(currentTarget.transform); Vector3 missileEulerRotation = transform.rotation.eulerAngles; Vector3 targeterEulerRotation = targeter.transform.rotation.eulerAngles; Vector3 rotationDifference = new Vector3(Mathf.Abs(targeterEulerRotation.x - missileEulerRotation.x), Mathf.Abs(targeterEulerRotation.y - missileEulerRotation.y), Mathf.Abs(targeterEulerRotation.z - missileEulerRotation.z)); if (rotationDifference.x <negativemaxTargetingRotation | rotationDifference.x> positivemaxTargetingRotation) { if (rotationDifference.y <negativemaxTargetingRotation | rotationDifference.y> positivemaxTargetingRotation) { } else { currentTarget = null; } } else { currentTarget = null; } }
public override void Initialize(BehaviourProcessor behaviourProcessor) { base.Initialize(behaviourProcessor); actorMovement = behaviourProcessor.GetComponent <ActorMovement>(); targetingBehaviour = behaviourProcessor.GetComponent <TargetingBehaviour>(); targetingDistance = behaviourProcessor.GetComponent <TargetingDistance>(); }
public TargetingDistance GetClosestToCenter() { Distances.Clear(); foreach (UITarget uITarget in DataHandling.forIdentifing) { UiMarkersController controller = uITarget.uimarker.GetComponent <UiMarkersController>(); float xPos = controller.GetXPos(); float yPos = controller.GetYPos(); TargetingDistance targetingDistance = new TargetingDistance(); targetingDistance.distance = Pythagoras(xPos, yPos); targetingDistance.ForTargeting = uITarget.Target; targetingDistance.targetMarker = uITarget.uimarker; Distances.Add(targetingDistance); } Distances.Sort(CompareByDistance); return(Distances[0]); }
int CompareByDistance(TargetingDistance x, TargetingDistance y) { if (x.distance == null) { if (y.distance == null) { return(0); } else { return(-1); } } else { if (y.distance == null) { return(1); } else { if (x.distance > y.distance) { return(1); } else if (x.distance < y.distance) { return(-1); } else { return(0); } } } }