// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { float distanceToTarget = Vector3.Distance(seeker.transform.position, target.transform.position); Vector3 steering = new Vector3(); //If we are outside of lurk range, steer towards lurk range if (distanceToTarget > lurkDistance + (lurkRange * 0.5f) || distanceToTarget < lurkDistance - (lurkRange * 0.5f)) { Vector3 nrm = (seeker.transform.position - target.transform.position).normalized; steering = seeker.GetSteering(target.transform.position + (nrm * lurkDistance)); } else if (body.velocity.magnitude > 0) { body.velocity *= decelerationRate; } body.velocity += steering * Time.fixedDeltaTime; if (steering == Vector3.zero) { seeker.transform.forward = (target.transform.position - seeker.transform.position).normalized; } else { seeker.transform.forward = steering; } animator.SetBool("targetDefensesAreUp", targetDefenseModule.DefensesViable); }
//OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { Vector3 steering = seeker.GetSteering(target); body.velocity += steering * Time.fixedDeltaTime; seeker.transform.forward = steering.normalized; }
protected override void FixedUpdate() { if (target == null) { HandleImpact(); return; } if (!shouldSteer) { return; } Vector3 steering = seeker.GetSteering(target); Body.velocity += steering * Time.fixedDeltaTime; transform.forward = steering.normalized; if (maxSpeed > 0 && Body.velocity.magnitude > maxSpeed) { Body.velocity = Vector3.ClampMagnitude(Body.velocity, maxSpeed); } }