Player bounce back when hit

Hello community!

I’m currently looking for the most efficient way to make my Player gameObject bounce backwards everytime it receives damage.

Thank you in advance!

  1. Flag for damage so they can’t take damage immediately again
  2. Take away player controls for bounce back
  3. Identify damage source
  4. Move character away / push rigidbody in opposite direction
  5. Clear Flags
  6. Restore Player Control

Here’s code I used to do it in 2D for multiplayer; Good luck

   public void Damaged(Transform damageSource){
 if (!invincible) {
 anim.SetTrigger ("TriggerDamage");
 Debug.Log ("Monsterisdamaged!");
 StartCoroutine (FlashSprite (damageSource));
 tno.Send ("TriggerDamage", Target.Others);
 }
 }
 [RFC]
 protected void TriggerDamage ()
 {
 anim.SetTrigger("TriggerDamage");
 }
 IEnumerator FlashSprite(Transform damageSource) {
 invincible = true;
 animationObj.GetComponent<SpriteRenderer>().color = Color.red;
 rbody.velocity = new Vector2((transform.position.x - damageSource.position.x) * 25 , rbody.velocity.y);

 //delayspecified amount
 yield return new WaitForSeconds(recoveryTime);
 health--;
 animationObj.GetComponent<SpriteRenderer>().color = Color.white;
 invincible = false;
 if (health == 0)
 HeroHasDied ();
 }