- Home /
knockback freezing game
Hello I have a IEnumerator script set up that knocks the player back when he collides with the enemy. I tried to set it up so the character would be knocked back in a different direction based on the position of the rigid bodies colliding, but whenever they collide it pauses the game, and when I hit the unpause button the character performs the correct knock back, so I'm wondering if it is a coding error on my part or maybe a setting I'm missing in the editor.
//variable from the collision handler class created in player
private BaddieCollision enemyCollider;
//variable being defined in the Start() method in player
enemyCollider = gameObject.GetComponent ();
IEnumerator function in player
public IEnumerator Knockback(float knockDur, float knockbackPwr, Vector3 knockbackDir)
{
float timer = 0;
while (knockDur > timer) {
timer += Time.deltaTime;
if (rb2d.position.x < enemyCollider.transform.position.x) {
rb2d.AddForce (new Vector3 (knockbackDir.x * -100, knockbackDir.y * knockbackPwr, transform.position.z));
}
if (rb2d.position.x > enemyCollider.transform.position.x) {
rb2d.AddForce (new Vector3 (knockbackDir.x * 100, knockbackDir.y * knockbackPwr, transform.position.z));
}
}
yield return 0;
}
in the BaddieCollider I have this
public Rigidbody2D enemyCollider;
and in the Start() of BaddieCollider
enemyCollider = gameObject.GetComponent ();
I also just noticed he isn't actually being moved on the x axis anymore but still faced in the right direction upon the collision.
Your answer
Follow this Question
Related Questions
Trying to freeze multiple gameObjects at the same time 1 Answer
issue with the rigid body x axis ,addforce doesn't work as it should for x axis 1 Answer
2D detecting if the player is someplace touching part of a particle system 0 Answers
2D Detect collisions of a 2D block only on left/right (not top/bottom) 0 Answers
Colliders not working when rotating 2 Answers