A 2D Character Controller with Rigidbody2D.AddForce
I just want to know if it's possible to fashion a 2D character controller where player movement is based on the AddForce method rather than directly editing the velocity of the character's attached rigidbody2D.
In this video, which is very helpful in general, Geig constructs his movement script for the x direction with this line:
moveX = Input.GetAxisRaw("Horizontal");
rb.velocity = new Vector2(moveX * speed, rb.velocity.y);
...which has worked very well for me until now. However, I've realized that directly writing "moveX * speed" to the ridigbody's velocity bars any external forces from influencing the player's movement in the X direction.
In short, I'm looking for a way to achieve more or less the exact effect obtained by those lines of code (visible in the video) for a 2D rigidbody-based player character that can also be affected by external forces like horizontal springs or horizontal knockback.
Maybe AddForce could work somehow? I'm just not sure how to go about implementing it.
Cheers.
Answer by SeanKilleen · Sep 30, 2016 at 08:01 AM
I am having the same problem too with a icy material. Even though the user should slide and slip along it when the horizontal input returns to zero the velocity stops. I think what we need to do is use add force but check in code that we are not going faster than max speed before applying it.
if(Mathf.Abs(Rigidbody2d.velocity.x) < maxSpeed){
GetComponent<Rigidbody2D>.AddForce(new Vector2(move * maxSpeed,0))
}
Answer by Tetsubo · Jun 24, 2016 at 07:39 AM
I have EXACTLY the same problem right now! And noone seems to know the answer (or wants to help us..)
Your answer
Follow this Question
Related Questions
My Player Controllercode isn't working 2 Answers
Addforce for 2d game is not doing anything. 0 Answers
Can't control jumping while moving horizontally 0 Answers
Boss AI Help in a 2D Platform game 0 Answers