private void Granade(DudeMoveState dude) { if (dude.AttackCooldown * dude.AttackSpeed > 1) { dude.AttackCooldown = 0; dude.WeaponEffect.Execute(dude.transform.position); } else { return; } if (dude.CubeStorage < dude.MaximumStorage * 0.8f) { return; } _fx.ScreenShake(0.1f, 0.25f); dude.CubeStorage = 0; var dir = (dude.Cursor.position - dude.Tr.position).normalized; var granade = _pool.SpawnFromPool("Granade", dude.Tr.position + dir, Quaternion.identity); granade.GetComponent <ProjectileBehaviour>().Shoot((dir + Vector3.up * 0.5f).normalized, dude.GranadeForce); dude.Rb.AddForce(-dir * dude.RecoilForce, ForceMode.Impulse); }