/// <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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #6
0
        /// <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);
        }
        /// <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);
        }
Beispiel #8
0
        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);
        }