Exemple #1
0
    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);
    }