- Home /
How to prevent jitter with movement over curved slopes
I am currently building a 2D platformer where the character can walk on curved slopes.
To do this I make use of Unity's Physics with a Rigidbody2D where the RigidBody2D has the option Fixed Angle enabled. Without scripting the character will remain upright, even when walking on a slope.
To make the movement seem more natural I want the character to remain upright in relation to the ground it is standing on (in other words, perpendicular). I implement this by registering the normal in the OnCollisionStay2D event of the Character's GameObject and in then calling the following code in the FixedUpdate:
transform.up = this.registeredNormal;
This seems to work, as my character stands up-right on any surface, but when I combine this with movement by applying force on the rigidbody it starts to jitter. Something which it does not do when I do not alter transform.up. This becomes even worse when I lerp the transition from transform.up to the normal discovered during a collision.
The code that I use to make my character stand up straight is:
public class StandStraight : MonoBehaviour {
private Vector2 turnToNormal = Vector2.up;
void OnCollisionStay2D(Collision2D other) {
if ( ! other.contacts [0].normal.Equals (this.turnToNormal)) {
this.turnToNormal = other.contacts [0].normal;
}
}
void FixedUpdate () {
transform.up = this.turnToNormal;
}
}
I use OnCollisionStay2D and not OnCollisionEnter2D because I am using an EdgeCollider2D that is curved; which means that OnCollisionEnter2D will only trigger once and never again when moving over that collider.
I get the feeling that the combination of using forces to move the character forward combined with altering transform.up is a poor combination but I could not find any other way to align my character with the normal of the surface below.
Thank you for your help with this.
Your answer
![](https://koobas.hobune.stream/wayback/20220613190410im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
2D endless scrolling game - Which method is best for moving objects without lags? 2 Answers
Damaging Enemies 1 Answer
2D Slope acceleration 1 Answer
How to make a slope? 1 Answer
Character rotation and move to mouse click point with speed 0 Answers