Movimento e direção: ângulos, seno e cosseno sem medo

10 min de leitura·Atualizado em 14 de junho de 2026

Mover um personagem para os lados é fácil: soma e subtrai de X. Mas e quando o projétil precisa sair na direção exata para onde a nave aponta? Ou quando um inimigo deve perseguir o jogador em diagonal? A resposta é trigonometria — e com blocos ela fica surpreendentemente palpável.

O sistema de coordenadas

O palco usa as coordenadas do Scratch: o centro é (0, 0), X cresce para a DIREITA e Y cresce para CIMA. Quem vem de programação de tela (onde Y cresce para baixo) precisa lembrar disso — inverter o sinal de Y é a causa de metade dos bugs de movimento.

A direção também segue o Scratch: 90° aponta para a direita, 0° para cima, -90° (ou 270°) para a esquerda e 180° para baixo. O bloco “aponte para a direção” e o reporter “direção” usam essa convenção.

Mover na direção do ator

O jeito mais simples de mover em qualquer ângulo é deixar o bloco fazer a conta: “aponte para a direção [ângulo]” seguido de “mova [n] passos”. O bloco “mova” decompõe o passo em X e Y automaticamente, usando seno e cosseno por baixo dos panos.

aponte para a direção 45     // diagonal para cima-direita
mova 10 passos               // anda 10 px nessa direção

Decompondo o movimento na mão

Quando você precisa de controle fino — por exemplo, aplicar velocidade com aceleração em um ângulo — vale decompor o vetor você mesmo. A regra, na convenção do Scratch (0° para cima):

adicione (seno de direção × velocidade) a x
adicione (cosseno de direção × velocidade) a y

Repare: o seno cuida do eixo X e o cosseno do eixo Y, porque o ângulo é medido a partir do eixo vertical. Em sistemas onde 0° aponta para a direita, seno e cosseno trocam de eixo — por isso copiar fórmulas da internet sem ajustar a convenção costuma “virar” o movimento.

💡

Se o personagem anda na direção errada, o problema quase sempre é o sinal de Y ou a troca entre seno e cosseno. Mude um de cada vez e teste — não os dois juntos.

Apontar para um alvo

Para um inimigo perseguir o jogador, calcule a direção do alvo a partir da diferença de posições. Muitas engines usam “arco-tangente”, mas no Wicand Blocks o caminho mais direto é mover um pouco a cada quadro em direção ao alvo, combinando com o reporter “distância até”:

se (distância até Jogador) > 5:
  // aproxima suavemente em X e Y
  adicione ((atributo x de Jogador) - posição x) ÷ 30 a x
  adicione ((atributo y de Jogador) - posição y) ÷ 30 a y

Dividir a diferença por um número (aqui 30) cria uma perseguição com desaceleração natural — o inimigo acelera quando está longe e freia ao chegar perto, sem nenhuma trigonometria explícita.

Órbitas e oscilações

Seno e cosseno de um valor que cresce com o tempo desenham um círculo. É a base de moedas que flutuam, planetas que orbitam e câmeras que tremem:

sempre:
  adicione 3 a angulo
  vá para x: (cosseno de angulo × raio)
            y: (seno de angulo × raio)

Trocando “vá para” por “adicione ao tamanho” ou “adicione ao efeito”, o mesmo padrão vira pulsação, respiração e brilho oscilante — efeitos que dão vida à cena com pouquíssimos blocos.

Pronto para colocar em prática?

Abrir o editor