Movimento e direção: ângulos, seno e cosseno sem medo
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çãoDecompondo 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 yRepare: 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 yDividir 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