- Home /
Inconsistent physics with knockback and bouncing.
Hi, I am making a game where the player can bounce from stomping on enemies and can get knocked back from them. However I sometimes get inconsistent results, the player sometimes get knocked back way too far or bounced too high. I figure its probably because my player movements involves changing my character's gravity and the addforce may have been applied multiple times so I did try adjusting the force to be weaker when the character's gravity is lower, and also add a bool to shut off the bounce temporarily and at first it seemed to work but occasionally my character still gets bounced up to the moon and I can't figure out why.
Here are some of my codes:
private void OnCollisionEnter2D(Collision2D collision)
{
if (bouncing == false)
{
if ((collision.gameObject.CompareTag("Enemy") && facingRight == true))
{
if (rb.gravityScale == 5)
{
rb.AddForce(Vector2.right * -10, ForceMode2D.Impulse);
rb.AddForce(Vector2.up * 5, ForceMode2D.Impulse);
}
else
{
rb.AddForce(Vector2.right * -10, ForceMode2D.Impulse);
rb.AddForce(Vector2.up * 3, ForceMode2D.Impulse);
}
Cantmove();
}
else if ((collision.gameObject.CompareTag("Enemy") && facingRight == false))
{
if (rb.gravityScale == 5)
{
rb.AddForce(Vector2.right * 10, ForceMode2D.Impulse);
rb.AddForce(Vector2.up * 5, ForceMode2D.Impulse);
}
else
{
rb.AddForce(Vector2.right * 10, ForceMode2D.Impulse);
rb.AddForce(Vector2.up * 3, ForceMode2D.Impulse);
}
Cantmove();
}
}
private void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.tag == "Bounce" && rb2d.gravityScale ==5 && MovmentII.bouncing == false)
{
MovmentII.bouncing = true;
rb2d.AddForce(transform.up * bounceforce, ForceMode2D.Impulse);
Physics2D.IgnoreLayerCollision(7, 25, true);
StartCoroutine(stopInvulnerable());
}
else if (other.gameObject.tag == "Bounce" && rb2d.gravityScale == 1 && MovmentII.bouncing == false)
{
MovmentII.bouncing = true;
rb2d.AddForce(transform.up * 5, ForceMode2D.Impulse);
Physics2D.IgnoreLayerCollision(7, 25, true);
StartCoroutine(stopInvulnerable());
}
}
Your answer
![](https://koobas.hobune.stream/wayback/20220613060543im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Is it ok to use Linear Drag and/or Mass to make an object immovable? 2 Answers
Odd behavior when circle collider is supposed to bounce off wall 1 Answer
Triying to make a character take knockback in a parabolic motion in 2D. 0 Answers
Player Knockback Without Physics 0 Answers
How to manage Physics2D bounciness so an object does not rotate like crazy after the bounce? 2 Answers