public override void UpdateMotor(CharacterMover mover) { //apply Friction float speed = mover.velocity.magnitude; if (speed != 0) //avoid dividing by zero { float drop = speed * mover.friction * Time.deltaTime; mover.velocity *= Mathf.Max(speed - drop, 0) / speed; //scale the velocity based on friction. } mover.velocity = mover.Accelerate(mover.accelDir, mover.velocity, mover.groundAccel, mover.maxGroundSpeed); //jumping if (mover.kpJump) { mover.velocity = new Vector3(mover.velocity.x, mover.jumpSpeed, mover.velocity.z); mover.gravity = new Vector3(0f, mover.gSpeed, 0f); } //floor no longer beneath us, switch state if (!mover.IsGrounded()) { mover.currentState = MovementState.falling; Debug.Log("Switch to falling"); } }
public override void UpdateMotor(CharacterMover mover) { //apply Friction float speed = mover.velocity.magnitude; if (speed != 0) //avoid dividing by zero { float drop = speed * mover.friction * Time.deltaTime; mover.velocity *= Mathf.Max(speed - drop, 0) / speed; //scale the velocity based on friction. } mover.velocity += mover.gravity * .2f * Time.deltaTime; mover.velocity = mover.Accelerate(mover.accelDir, mover.velocity, mover.groundAccel, mover.maxGroundSpeed); //jumping if (mover.kpJump) { mover.velocity += new Vector3(0f, mover.jumpSpeed, 0f); } //float upwards if (mover.kJump) { mover.velocity += mover.gravity * -.6f * Time.deltaTime; } }
public override void UpdateMotor(CharacterMover mover) { //variable height if (mover.krJump && mover.velocity.y > 0f) { mover.gravity = new Vector3(0f, mover.gSpeedVariable, 0f); } if (mover.velocity.y <= 0f) { //if (mover.wallSlide) // mover.gravity= new Vector3(0f, mover.gSpeed/5, 0f); //else mover.gravity = new Vector3(0f, mover.gSpeed, 0f); } mover.velocity += mover.gravity * Time.deltaTime; mover.wallSlide = false; mover.velocity = mover.Accelerate(mover.accelDir, mover.velocity, mover.airAccel, mover.maxAirSpeed); //mover.charController.Move (mover.velocity); if (mover.IsGrounded()) { mover.velocity = new Vector3(mover.velocity.x, 0f, mover.velocity.z); mover.currentState = MovementState.walking; mover.wallSlide = false; mover.gravity = new Vector3(0f, mover.gSpeed, 0f); Debug.Log("Switch to walking"); } }