コード例 #1
0
 private void SetThirdPersonActionVars()
 {
     // Movement modifiers
     RunSpeed           = 15f;
     AirSpeed           = 15f;
     GroundAcceleration = 300f;
     AirAcceleration    = 30f;
     SpeedDamp          = 10f;
     AirSpeedDamp       = 0.01f;
     SlideSpeed         = 22f;
     // Gravity modifiers
     DownGravityAdd = 0;
     // Jump/Wall modifiers
     JumpVelocity           = 16f;
     JumpBoostSpeed         = 18f;
     JumpBoostRequiredSpeed = 12f;
     JumpBoostAdd           = 10f;
     WallJumpThreshold      = 8f;
     WallJumpBoost          = 1.0f;
     WallJumpSpeed          = 12f;
     WallRunLimit           = 8f;
     WallRunJumpBoostSpeed  = 20f;
     WallRunJumpBoostAdd    = 10f;
     WallRunJumpSpeed       = 12f;
     WallRunJumpUpSpeed     = 12f;
     WallRunImpulse         = 0.0f;
     WallRunSpeed           = 15f;
     WallRunClimbCosAngle   = Mathf.Cos(Mathf.Deg2Rad * 30f);
     // Toggles
     conserveUpwardMomentum = false;
     wallJumpEnabled        = true;
     wallRunEnabled         = false;
     wallClimbEnabled       = true;
     ShortHopEnabled        = true;
     JumpBoostEnabled       = true;
     // Delegates
     accelerate = AccelerateStandard;
     // Timings
     JumpMeterSize             = 0.3f;
     JumpMeterThreshold        = JumpMeterSize / 3;
     jumpGracePeriod           = 0.1f;
     BufferJumpGracePeriod     = 0.1f;
     SlideGracePeriod          = 0.2f;
     WallJumpGracePeriod       = 0.1f;
     WallRunGracePeriod        = 0.2f;
     WallClimbGracePeriod      = 0.2f;
     ReGrabGracePeriod         = 0.5f;
     MovingColliderGracePeriod = 0.01f;
     MovingPlatformGracePeriod = 0.1f;
     StuckGracePeriod          = 0.2f;
 }
コード例 #2
0
        /// <summary>
        /// RK4 solver.
        /// </summary>
        /// <param name="trial">The current trial</param>
        /// <param name="state">State of the system (input / output)</param>
        /// <param name="dt">Time since last evaluation</param>
        /// <param name="accelFunction">Function to calculate acceleration</param>
        /// <param name="controlInput">The current joystick or forcing function input</param>
        private static void Integrate(Trial trial, AxisMotionState state, double dt, AccelerationFunction accelFunction,
                                      ControlInput controlInput)
        {
            AxisMotionDerivative a;
            AxisMotionDerivative b;
            AxisMotionDerivative c;
            AxisMotionDerivative d;
            double dadt;
            double dvdt;

            a = new AxisMotionDerivative(state.velocity, accelFunction(trial, state, controlInput));
            b = RK4Evaluate(trial, state, dt * 0.5, a, controlInput, accelFunction);
            c = RK4Evaluate(trial, state, dt * 0.5, b, controlInput, accelFunction);
            d = RK4Evaluate(trial, state, dt, c, controlInput, accelFunction);

            dadt = 1.0 / 6.0 * (a.dAngle + 2.0 * (b.dAngle + c.dAngle) + d.dAngle);
            dvdt = 1.0 / 6.0 * (a.dVelocity + 2.0 * (b.dVelocity + c.dVelocity) + d.dVelocity);

            state.position += dadt * dt;
            state.velocity += dvdt * dt;

            state.acceleration = dvdt;
        }
コード例 #3
0
        /// <summary>
        /// Helper function for the RK4 solver.
        /// </summary>
        private static AxisMotionDerivative RK4Evaluate(Trial trial, AxisMotionState initial, double dt,
                                                        AxisMotionDerivative d, ControlInput controlInput, AccelerationFunction accelFunction)
        {
            AxisMotionState state;

            state = new AxisMotionState(initial.position + d.dAngle * dt, initial.velocity + d.dVelocity * dt,
                                        initial.acceleration);

            return(new AxisMotionDerivative(state.velocity, accelFunction(trial, state, controlInput)));
        }