예제 #1
0
    private void CharacterAimBase_OnShoot(object sender, CharacterAim_Base.OnShootEventArgs e)
    {
        Shoot_Flash.AddFlash(e.gunEndPointPosition);
        WeaponTracer.Create(e.gunEndPointPosition, e.shootPosition);
        UtilsClass.ShakeCamera(.6f, .05f);
        SpawnBulletShellCasing(e.gunEndPointPosition, e.shootPosition);

        if (weaponType == WeaponType.Shotgun)
        {
            // Shotgun spread
            int shotgunShells = 4;
            for (int i = 0; i < shotgunShells; i++)
            {
                WeaponTracer.Create(e.gunEndPointPosition, e.shootPosition + UtilsClass.GetRandomDir() * Random.Range(-20f, 20f));
                if (i % 2 == 0)
                {
                    SpawnBulletShellCasing(e.gunEndPointPosition, e.shootPosition);
                }
            }
        }

        // Any enemy hit?
        RaycastHit2D raycastHit = Physics2D.Raycast(e.gunEndPointPosition, (e.shootPosition - e.gunEndPointPosition).normalized, Vector3.Distance(e.gunEndPointPosition, e.shootPosition));

        if (raycastHit.collider != null)
        {
            EnemyHandler enemyHandler = raycastHit.collider.gameObject.GetComponent <EnemyHandler>();
            if (enemyHandler != null)
            {
                Debug.Log("Cannot Damage!");
                //enemyHandler.Damage(characterAimBase);
            }
        }
    }
예제 #2
0
    private void PlayerBase_OnShoot(object sender, CharacterAim_Base.OnShootEventArgs e)
    {
        Vector3 shootDir = (e.shootPosition - e.gunEndPointPosition).normalized;

        BulletRaycast3D.Shoot(e.gunEndPointPosition, shootDir);

        Shoot_Flash.AddFlash(e.gunEndPointPosition, new Vector3(3, 2.7f));
        Vector3 mouseWorldPosition = Mouse3D.GetMouseWorldPosition();

        mouseWorldPosition.y = e.gunEndPointPosition.y;
        WeaponTracer.Create3D(e.gunEndPointPosition, mouseWorldPosition);
    }
예제 #3
0
        private void EnemyAim_OnShoot(object sender, CharacterAim_Base.OnShootEventArgs e)
        {
            Shoot_Flash.AddFlash(e.gunEndPointPosition);
            WeaponTracer.Create(e.gunEndPointPosition, e.shootPosition);
            UtilsClass.ShakeCamera(.3f, .05f);
            SpawnBulletShellCasing(e.gunEndPointPosition, e.shootPosition);

            // Player hit?
            if (e.hitObject != null)
            {
                Player player = e.hitObject.GetComponent <Player>();
                if (player != null)
                {
                    player.Damage(this, EnemyMain.EnemyStats.damageMultiplier);
                }
            }
        }
예제 #4
0
    private void PlayerSwapAimNormal_OnShoot(object sender, CharacterAim_Base.OnShootEventArgs e)
    {
        Shoot_Flash.AddFlash(e.gunEndPointPosition);
        WeaponTracer.Create(e.gunEndPointPosition, e.shootPosition);
        UtilsClass.ShakeCamera(.6f, .05f);
        SpawnBulletShellCasing(e.gunEndPointPosition, e.shootPosition);

        if (weapon.GetWeaponType() == Weapon.WeaponType.Shotgun)
        {
            // Shotgun spread
            int shotgunShells = 4;
            for (int i = 0; i < shotgunShells; i++)
            {
                WeaponTracer.Create(e.gunEndPointPosition, e.shootPosition + UtilsClass.GetRandomDir() * UnityEngine.Random.Range(-20f, 20f));
                if (i % 2 == 0)
                {
                    SpawnBulletShellCasing(e.gunEndPointPosition, e.shootPosition);
                }
            }
        }

        switch (weapon.GetWeaponType())
        {
        default:
        case Weapon.WeaponType.Pistol:      Sound_Manager.PlaySound(Sound_Manager.Sound.Pistol_Fire, GetPosition());    break;

        case Weapon.WeaponType.Rifle:       Sound_Manager.PlaySound(Sound_Manager.Sound.Rifle_Fire, GetPosition());     break;

        case Weapon.WeaponType.Shotgun:     Sound_Manager.PlaySound(Sound_Manager.Sound.Shotgun_Fire, GetPosition());   break;
        }

        // Any enemy hit?
        if (e.hitObject != null)
        {
            Enemy enemy = e.hitObject.GetComponent <Enemy>();
            if (enemy != null)
            {
                enemy.Damage(this, weapon.GetDamageMultiplier());
            }
            ShieldFieldTransformer shieldFieldTransformer = e.hitObject.GetComponent <ShieldFieldTransformer>();
            if (shieldFieldTransformer != null)
            {
                shieldFieldTransformer.Damage(this, weapon.GetDamageMultiplier());
            }
        }
    }
예제 #5
0
    private void CharacterBase_OnShoot(object sender, CharacterAim_Base.OnShootEventArgs e)
    {
        Shoot_Flash.AddFlash(e.gunEndPointPosition);
        WeaponTracer.Create(e.gunEndPointPosition, e.shootPosition);
        ShakeCamera(.3f, .05f);

        // Any hit? Player?
        RaycastHit2D raycastHit = Physics2D.Raycast(e.gunEndPointPosition, (e.shootPosition - e.gunEndPointPosition).normalized, Vector3.Distance(e.gunEndPointPosition, e.shootPosition));

        if (raycastHit.collider != null)
        {
            PlayerAim player = raycastHit.collider.gameObject.GetComponent <PlayerAim>();
            if (player != null)
            {
                player.Damage(this);
            }
        }
    }
    private void CharacterAimBase_OnShoot(object sender, CharacterAim_Base.OnShootEventArgs e)
    {
        Shoot_Flash.AddFlash(e.gunEndPointPosition);
        WeaponTracer.Create(e.gunEndPointPosition, e.shootPosition);
        UtilsClass.ShakeCamera(.6f, .05f);

        // Any enemy hit?
        RaycastHit2D raycastHit = Physics2D.Raycast(e.gunEndPointPosition, (e.shootPosition - e.gunEndPointPosition).normalized, Vector3.Distance(e.gunEndPointPosition, e.shootPosition));

        if (raycastHit.collider != null)
        {
            EnemyHandler enemyHandler = raycastHit.collider.gameObject.GetComponent <EnemyHandler>();
            if (enemyHandler != null)
            {
                Debug.Log("Cannot Damage!");
                //enemyHandler.Damage(characterAimBase);
            }
        }
    }
예제 #7
0
 private void CharacterAimBase_OnShoot(object sender, CharacterAim_Base.OnShootEventArgs e)
 {
     OnShoot?.Invoke(this, e);
 }
예제 #8
0
 private void PlayerShootProjectiles_OnShoot(object sender, CharacterAim_Base.OnShootEventArgs e)
 {
     // Shoot
     shootAction(e.gunEndPointPosition, e.shootPosition);
 }