/// <summary> /// Gets the orientation output. /// </summary> /// <param name="input">The steering input containing relevant information to use when calculating the orientation output.</param> /// <param name="output">The orientation output to be populated.</param> public override void GetOrientation(SteeringInput input, OrientationOutput output) { if (input.currentPlanarVelocity.sqrMagnitude > 0f) { return; } var grp = input.unit.transientGroup; if (grp == null) { return; } var model = grp.modelUnit; if (model == null) { return; } var targetOrientation = model.forward; output.desiredOrientation = targetOrientation; output.desiredAngularAcceleration = GetAngularAcceleration(targetOrientation, input); }
public override void GetOrientation(SteeringInput input, OrientationOutput output) { var targetOrientation = (fixationPoint.position - this.transform.position).OnlyXZ(); output.desiredOrientation = targetOrientation; output.desiredAngularAcceleration = GetAngularAcceleration(targetOrientation.normalized, input); }
public override void GetOrientation(SteeringInput input, OrientationOutput output) { var targetOrientation = (this.focusPoint.position - input.unit.position).OnlyXZ(); if (targetOrientation.sqrMagnitude > this.minProximityToFocus * this.minProximityToFocus) { return; } output.desiredOrientation = targetOrientation; output.desiredAngularAcceleration = GetAngularAcceleration(targetOrientation.normalized, input); }
/// <summary> /// Gets the orientation. /// </summary> /// <param name="input">The input.</param> /// <param name="output">The output.</param> public override void GetOrientation(SteeringInput input, OrientationOutput output) { if (!input.unit.lookAt.HasValue) { return; } var targetOrientation = (input.unit.lookAt.Value - input.unit.position).OnlyXZ(); output.desiredOrientation = targetOrientation; output.desiredAngularAcceleration = GetAngularAcceleration(targetOrientation.normalized, input); }
/// <summary> /// Gets the orientation. /// </summary> /// <param name="input">The input.</param> /// <param name="output">The output.</param> public override void GetOrientation(SteeringInput input, OrientationOutput output) { if (input.currentPlanarVelocity.sqrMagnitude < this.minimumSpeedToTurn * this.minimumSpeedToTurn) { output.desiredAngularAcceleration = -input.currentAngularSpeed / Time.fixedDeltaTime; return; } var align = this.alignWithElevation && input.unit.isGrounded; var targetOrientation = align ? input.currentFullVelocity.normalized : input.currentPlanarVelocity.normalized; output.desiredOrientation = targetOrientation; output.desiredAngularAcceleration = GetAngularAcceleration(targetOrientation, input); }
public override void GetOrientation(SteeringInput input, OrientationOutput output) { var unit = input.unit; if (!unit.nextNodePosition.HasValue) { unit.Resume(); return; } var targetOrientation = (unit.nextNodePosition.Value - unit.position).OnlyXZ().normalized; if (Vector3.Dot(unit.forward, targetOrientation) < 0.985f) { unit.Wait(null); } else { unit.Resume(); } output.desiredOrientation = targetOrientation; output.desiredAngularAcceleration = GetAngularAcceleration(targetOrientation, input); }