- Home /
Velocity limiter not functional
If i have this code:
public float walkAcceleration = 5f;
public float maxWalkSpeed = 20f;
public float maxSlope = 60f;
public float jumpVelocity = 20f;
public GameObject cameraObject;
[HideInInspector]
public Vector2 horizontalMovement;
[HideInInspector]
public bool grounded = false;
public float jump = 0f;
void Update () {
horizontalMovement = new Vector2(rigidbody.velocity.x, rigidbody.velocity.z);
if(horizontalMovement.magnitude > maxWalkSpeed){
horizontalMovement.Normalize();
horizontalMovement *= maxWalkSpeed;
}
float velX = rigidbody.velocity.x;
velX = horizontalMovement.x;
float velZ = rigidbody.velocity.z;
velZ = horizontalMovement.y;
//rigidbody.velocity = new Vector3(horizontalMovement.x, 0, horizontalMovement.y);
transform.rotation = Quaternion.Euler(0, cameraObject.GetComponent<MouseLookScript>().currentYRotation, 0);
rigidbody.AddRelativeForce(Input.GetAxis("Horizontal") * walkAcceleration, jump, Input.GetAxis("Vertical") * walkAcceleration);
jump = 0f;
if(Input.GetButtonDown("Jump") && grounded){
jump = jumpVelocity;
}
}
Why can my person still walk at like the speed of sound ? When it is clearly being limited at the start of the update function.
Answer by Eric5h5 · Oct 15, 2014 at 07:26 PM
You're continuously adding more force by using AddRelativeForce with a non-zero value in Update (which, by the way, makes the code framerate-dependent...always use FixedUpdate for physics). You're only limiting the rate at which the speed can increase, but not limiting the actual speed.
It works fine if I replace the lines:
float velX = rigidbody.velocity.x;
velX = horizontal$$anonymous$$ovement.x;
float velZ = rigidbody.velocity.z;
velZ = horizontal$$anonymous$$ovement.y;
with
rigidbody.velocity = new Vector3(horizontal$$anonymous$$ovementx, 0, horizontal$$anonymous$$ovementz)
The only issue is then I cant jump because of the 0, do you have a fix for this ?
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Making a bubble level (not a game but work tool) 1 Answer
Character doesn't stop and sits on top of target. 1 Answer
Multi-player Moving Script Help 0 Answers
[Answered]Rigid body Movement C# 0 Answers