void Update() { joystickID = playerControl.joystickID; Rigidbody2D rb = transform.GetComponent <Rigidbody2D>(); if (timeBtwAttack <= 0) { if (attackState == 1 || attackState == 2) { if (attackState == 1) { attackState = 2; rb.AddForce(new Vector2(currentAttack.momentum.x * Mathf.Sign(transform.localScale.x), currentAttack.momentum.y), ForceMode2D.Impulse); } Debug.Log("active"); Collider2D[] enemiesToDamage = Physics2D.OverlapCircleAll(currentAttack.location.position, attackRange, whatIsEnemies); foreach (Collider2D enemyCollider in enemiesToDamage) { PlayerControl enemy = enemyCollider.GetComponent <PlayerControl>(); if (enemy.team != playerControl.team && enemy.knockbackTime < currentAttack.knockbackTime - 0.2f && !enemy.isBlocking) { shake.StartCameraShake(0.1f, 0.2f); hitSource.Play(); Debug.Log("hit"); enemy.transform.localScale = new Vector2(Mathf.Abs(enemy.transform.localScale.x) * Mathf.Sign(-transform.localScale.x), enemy.transform.localScale.y); enemy.health -= currentAttack.damage; if (enemy.health < enemy.breakPoint) { // BREAK!!!! Instantiate(breakEffect); hitSource.Play(); if (enemy.breakPoint > 0) { enemy.breakPoint -= 100; } enemy.knockbackTime = 2f; enemy.GetComponent <Rigidbody2D>().AddForce(new Vector2(20 * Mathf.Sign(transform.localScale.x), 20), ForceMode2D.Impulse); //impulse dir } else { enemy.knockbackTime = currentAttack.knockbackTime; //stun time enemy.GetComponent <Rigidbody2D>().AddForce(new Vector2(currentAttack.knockback.x * Mathf.Sign(transform.localScale.x), currentAttack.knockback.y), ForceMode2D.Impulse); //impulse dir } } else { missSource.Play(); } // enemiesToDamage[i].GetComponent<Player>().TakeDamage(damage); } Collider2D[] puffers = Physics2D.OverlapCircleAll(currentAttack.location.position, attackRange, LayerMask.GetMask("Puffer")); foreach (Collider2D puffer in puffers) { PufferControl puf = puffer.GetComponent <PufferControl>(); if (puf.team != playerControl.team) { puf.team = playerControl.team; hitSource.Play(); Debug.Log("hit"); puf.knockbackTime = currentAttack.knockbackTime; //stun time puf.knockbackDir = new Vector2(currentAttack.knockback.x * Mathf.Sign(transform.localScale.x), currentAttack.knockback.y); puf.GetComponent <Rigidbody2D>().AddForce(new Vector2(currentAttack.knockback.x * Mathf.Sign(transform.localScale.x), currentAttack.knockback.y), ForceMode2D.Impulse); //impulse dir } } timeBtwAttack -= Time.deltaTime; if (timeBtwAttack < -currentAttack.activeTime) { attackState = 3; timeBtwAttack = currentAttack.recoveryTime; } } else { attackState = 0; playerControl.canMove = true; if (Input.GetButtonDown("Attack_" + joystickID)) { attackState = 1; if (Input.GetAxis("Vertical_" + joystickID) < -0.5) { currentAttack = slide; } else if (Input.GetAxis("Vertical_" + joystickID) > 0.5) { currentAttack = uppercut; } else { currentAttack = neutralGround; } timeBtwAttack = currentAttack.initTime; playerControl.canMove = false; playerControl.animationState = currentAttack.animationState; } } } else { timeBtwAttack -= Time.deltaTime; } if (attackState != 0 && playerControl.grounded && Mathf.Abs(rb.velocity.x) > 0.1f) { rb.AddForce(Vector2.left * Mathf.Sign(rb.velocity.x) * 20); } if (playerControl.knockbackTime > 0) { attackState = 0; } }