Пример #1
0
    /* poderia usar um angulo, senos e cossenos ( como no caso de Enemy.cs)
     * mas como o player trabalha com pontos de origens do tiro nas partes upgradiáveis,
     * é mais simples simplesmente apontar na direcao do ponto de origem. caso o ponto de origem
     * seja no centro do player, o comportamento direcional se limitará a algo linear */
    private void diretionalFire(Ammo ammo, Transform WeaponShootSpawPoint)
    {
        Vector2 playerCenter           = player.GetComponent <Collider2D>().bounds.center;
        Vector2 vetorPosicaoOrigemTiro = new Vector2(WeaponShootSpawPoint.position.x, WeaponShootSpawPoint.position.y);
        /*esse vetor que determinara a direcao/angulacao de origem! mas n confunda com a angulacao do sprite! */
        Vector2 vetorDirecaoProjetil;

        /*caso de lasers, ja que ficam colados ao player */
        if (ammo.ApendPositionToPlayer())
        {
            vetorDirecaoProjetil         = (playerCenter - vetorPosicaoOrigemTiro).normalized * Vector2.zero;
            currentAmmo                  = Instantiate(ammo.getAmmoPrefab(), playerCenter, Quaternion.identity);
            currentAmmo.transform.parent = player.transform;
        }
        /* caso municoes comuns */
        else
        {
            vetorDirecaoProjetil = (playerCenter - vetorPosicaoOrigemTiro).normalized * -ammo.getAmmoShotSpeed();
            currentAmmo          = Instantiate(ammo.getAmmoPrefab(), vetorPosicaoOrigemTiro, Quaternion.identity);
            currentAmmo.GetComponent <AmmoHandler>().SetAmmoSpeed(ammo.getAmmoShotSpeed());
        }
        currentAmmo.GetComponent <Rigidbody2D>().velocity = RadialAjust(vetorDirecaoProjetil);
        /* rotaciona a municao em si: */
        currentAmmo.transform.rotation = Quaternion.LookRotation(Vector3.forward, vetorDirecaoProjetil);
    }
Пример #2
0
 private void linearFire(Ammo ammo, Transform WeaponShootSpawPoint)
 {
     if (ammo.ApendPositionToPlayer())
     {
         currentAmmo = Instantiate(ammo.getAmmoPrefab(), WeaponShootSpawPoint.transform.position, Quaternion.identity) as GameObject;
         currentAmmo.transform.parent = player.transform;
     }
     else
     {
         Vector2 vetorDir = WeaponShootSpawPoint.transform.position;
         currentAmmo = Instantiate(ammo.getAmmoPrefab(), WeaponShootSpawPoint.transform.position, Quaternion.identity) as GameObject;
         currentAmmo.GetComponent <Rigidbody2D>().velocity = new Vector2(0, ammo.getAmmoShotSpeed());
         currentAmmo.GetComponent <AmmoHandler>().SetAmmoSpeed(ammo.getAmmoShotSpeed());
     }
 }