/* 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); }
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()); } }