public Vector2 Calcularpursuit(Arma arma, float secs) { Vector2 toTarget = alvo.getPosition() - arma.getPosition(); float relative = Vector2.Dot(arma.getDirecao(), alvo.getDirecao()); if (Vector2.Dot(toTarget, arma.getDirecao()) > 0 && relative < -0.95) { return(new BehaviorSeek(alvo.getPosition()).Calculate(arma, secs)); } float lookAheadTime = toTarget.Length() / (arma.getMaxVelocidade() + alvo.getVelocidade().Length()); return(new BehaviorSeek(alvo.getPosition() + alvo.getVelocidade() * lookAheadTime).Calculate(arma, secs)); }
public void ativarantiRocket() { zerarantiRocket(); antiRocketAtivo = true; setImagem(owner.getImagemHidden()); setPosition(owner.getPosition()); direcao_ = owner.getDirecao(); }
public bool ocorreuColisaoNaveMeteoro(Nave nave, bool especial = false) { Rectangle antiRocketRec = new Rectangle((int)nave.getPosition().X - ((int)nave.getImagem().Width / 2), (int)nave.getPosition().Y - ((int)nave.getImagem().Height / 2), (int)nave.getImagem().Width, (int)nave.getImagem().Height); // Trata a colisao da nave com os Meteoros List <Obstaculo> Meteoros = recuperaComponentesObstaculos(); foreach (Obstaculo prime in Meteoros) { Rectangle obstaculo = new Rectangle((int)prime.getPosition().X - ((int)prime.getImagem().Width / 2), (int)prime.getPosition().Y - ((int)prime.getImagem().Height / 2), (int)prime.getImagem().Width, (int)prime.getImagem().Height); if (obstaculo.Intersects(antiRocketRec)) { prime.Dispose(); return(true); } } return(false); }