Exemplo n.º 1
0
        public bool NaMira(GraphicsDevice graphicsDevice)
        {
            //Calcula a distância entre a base do canhão e o centro do disco voador
            InformacaoDiscoVoador inf = InformacaoDiscoVoador.GetInformacao(this);
            float x = Posicao.X + inf.distancia * (float)Math.Cos(RadianosCorrigido);
            float y = Posicao.Y - inf.distancia * (float)Math.Sin(RadianosCorrigido);

            return(Math.Abs(x - inf.xDiscoVoador) <= MARGEM_ERRO && Math.Abs(y - inf.yDiscoVoador) <= MARGEM_ERRO);
        }
Exemplo n.º 2
0
            public static InformacaoDiscoVoador GetInformacao(Canhao canhao)
            {
                InformacaoDiscoVoador inf         = new InformacaoDiscoVoador();
                DiscoVoador           discoVoador = DiscoVoador.Instancia;

                inf.meiaLargura     = discoVoador.Imagem.Height * 1.0f / 2;
                inf.meiaAltura      = discoVoador.Imagem.Width * 1.0f / 2;
                inf.yDiscoVoador    = discoVoador.Posicao.Y + inf.meiaLargura;
                inf.xDiscoVoador    = discoVoador.Posicao.X + inf.meiaAltura;
                inf.catetoOposto    = canhao.Posicao.Y - inf.yDiscoVoador;
                inf.catetoAdvacente = inf.xDiscoVoador - canhao.Posicao.X;
                inf.distancia       = (float)Math.Sqrt(Math.Pow(inf.catetoOposto, 2) + Math.Pow(inf.catetoAdvacente, 2));
                return(inf);
            }
Exemplo n.º 3
0
 internal void CorrigirCoordenada(GameTime gameTime)
 {
     if (gameTime.TotalGameTime.TotalMilliseconds - miliSegundoUltimaAcao > 200)
     {
         const float           velocidade = 1.2f;
         InformacaoDiscoVoador inf        = InformacaoDiscoVoador.GetInformacao(this);
         float seno    = inf.catetoOposto / inf.distancia;
         float radiano = (float)Math.Asin(seno);
         if (radiano > RadianosCorrigido)
         {
             Angulo += velocidade;
         }
         else if (radiano < RadianosCorrigido)
         {
             Angulo -= velocidade;
         }
         miliSegundoUltimaAcao = gameTime.TotalGameTime.TotalMilliseconds;
     }
 }
Exemplo n.º 4
0
 public static InformacaoDiscoVoador GetInformacao(Canhao canhao)
 {
     InformacaoDiscoVoador inf = new InformacaoDiscoVoador();
     DiscoVoador discoVoador = DiscoVoador.Instancia;
     inf.meiaLargura = discoVoador.Imagem.Height * 1.0f / 2;
     inf.meiaAltura = discoVoador.Imagem.Width * 1.0f / 2;
     inf.yDiscoVoador = discoVoador.Posicao.Y + inf.meiaLargura;
     inf.xDiscoVoador = discoVoador.Posicao.X + inf.meiaAltura;
     inf.catetoOposto = canhao.Posicao.Y - inf.yDiscoVoador;
     inf.catetoAdvacente = inf.xDiscoVoador - canhao.Posicao.X;
     inf.distancia = (float)Math.Sqrt(Math.Pow(inf.catetoOposto, 2) + Math.Pow(inf.catetoAdvacente, 2));
     return inf;
 }