public void PlayerStagger(PlayerAttack.Attack attack) //PlayerStagger for all player attacks { if (anim.GetCurrentAnimatorStateInfo(0).IsName("Grabbing Ledge")) { //Undo code for ledge grab anim.SetBool("CanLandCancel", true); rb.constraints = RigidbodyConstraints2D.FreezeRotation; } Debug.Log(attack.attackDamage + " Damage Dealt by " + attack.name); GameManager.Instance.PlayerDamage(playerNum, attack.attackDamage); rb.AddForceAtPosition(CalculateKnockback(attack.knockbackDirection, attack.knockbackAmount), attack.hitbox.transform.position); anim.SetTrigger("Stagger"); if (attack.hitbox.tag.Equals("Projectile")) { lastHit = attack.hitbox.GetComponent <ProjectileScript>().shooter.GetComponent <Player>().playerNum; } else if (attack.hitbox.tag.Equals("Hazard")) { //Do nothing with the last hit variable } else { lastHit = attack.hitbox.transform.parent.gameObject.GetComponent <Player>().playerNum; } }
void OnTriggerEnter2D(Collider2D col) { if (col.tag == "Attack") { PlayerAttack attacker = col.transform.parent.GetComponent <PlayerAttack>(); PlayerAttack.Attack attack; if (col.name.Equals("Bair")) { attack = attacker.Bair; } else if (col.name.Equals("Fair")) { attack = attacker.Fair; } else if (col.name.Equals("Uair")) { attack = attacker.Uair; } else if (col.name.Equals("Dair")) { attack = attacker.Dair; } else if (col.name.Equals("Nair")) { attack = attacker.Nair; } else if (col.name.Equals("Ftilt")) { attack = attacker.Ftilt; } else if (col.name.Equals("Utilt")) { attack = attacker.Utilt; } else if (col.name.Equals("Dtilt")) { attack = attacker.Dtilt; } else if (col.name.Equals("Jab")) { attack = attacker.Jab; } else { Debug.Log("UNKNOWN ATTACK: " + col.name); Debug.Log("Defaulting to attacker's jab"); attack = attacker.Jab; } //If attacking player is flipped, flip attack knockback direction as well if (!col.transform.parent.GetComponent <Player>().facingRight) { attack.knockbackDirection = new Vector2(attack.knockbackDirection.x * -1, attack.knockbackDirection.y); } p.PlayerStagger(attack); } if (col.tag == "Projectile") { PlayerAttack attacker = col.GetComponent <ProjectileScript>().shooter.GetComponent <PlayerAttack>(); PlayerAttack.Attack attack = new PlayerAttack.Attack(); attack.hitbox = col.gameObject; attack.attackDamage = attacker.projectileDamage; attack.knockbackAmount = attacker.projectileKnockback; attack.knockbackDirection = col.GetComponent <Rigidbody2D>().velocity.normalized; p.PlayerStagger(attack); } if (col.tag == "Grab") { Debug.Log("Player Grabbed!"); this.transform.parent.parent = col.transform.parent; col.transform.parent.GetComponent <Animator>().SetTrigger("Grab Success"); col.transform.parent.GetComponent <Animator>().ResetTrigger("Grab Release"); anim.SetTrigger("Grabbed"); p.rb.simulated = false; Invoke("EscapeGrab", 5); //HOW DO CANCEL INVOKE? return; } }