Rotação e Ângulos
Olá pessoal!
Este tutorial é uma introdução muito básica aos ângulos e rotações e como eles podem fazer os jogos funcionarem. É parte de uma série básica que estou escrevendo para ajudar crianças a aprenderem a usar Construct 2,
Fundamentos de Jogos 2D
Começando...um pouco sobre ângulos
Todos os ângulos podem ser medidos de uma série de maneiras. Alguns usam graus ou radianos, e ainda há métodos de bytes, mas já que Construct 2 usa somente radianos, isso é sobre o que eu vou falar.
Um ângulo pode ser compreendido como uma parte de uma volta, ou ainda como uma volta completa. Nós então usamos graus para medir o quanto foi rotacionado. Se você se levantar, olhar seu computador e então se virar 180 graus, você estaria olhando para a direção oposta. Se você rotacionar 360 graus, você teria girado em um círculo completo e estaria de volta onde começou.
Assim como nas coordenadas da tela, você tem ângulos relativos e ângulos absolutos. Um ângulo absoluto é medido em relação à tela. Se você olhar para um sprite no Construct, ele tem uma propriedade para ângulo. Ela começa com zero e é considerada como estando voltada para a direita. Se você ajustasse esse número, você notaria que pode pensar em um sprite como uma mão em um relógio no qual ângulos diferentes representam horas diferentes. A zero grau, ele está na posição das três horas. Em 90 graus, está na posição de seis horas. A 360 graus, o objeto está novamente voltado para as três horas.
Se você se lembrar que zero grau é sempre direita e 90 graus é um quarto de volta no sentido das horas, você pode ter uma boa ideia sobre em qual ângulo um objeto está.
Aqui vai um pequeno lembrete:
0 grau: face para a direita/leste
90 graus: face para baixo/Sul
180 graus: face para esquerda/Oeste
270 graus: face para cima/Norte
O que acontece com um objeto que tem um ângulo negativo, como -90? É simples, -90 graus está apontando para cima. É simplesmente rotacionar "para trás" ou no sentido contrário ao ponteiro do relógio em 90 graus. Sempre que você vir um ângulo negatvo, isso simplesmente significa que o objeto rotacionou na direção oposta à de um ângulo positivo.
Também você pode ter um ângulo como 450 graus, o que é a mesma coisa que ter um ângulo de 90 graus. Isso porque foi rotacionado 360 graus, o que é um círculo completo, e continuou rotacionando mais 90 graus. Se você girar duas vezes em sua cadeira então você terá rotacionado 720 graus, mas você ainda estará olhando para a mesma direção que estava no começo. Zero grau é o mesmo que 360 graus e o mesmo que 720 graus. O mesmo vale para números negativos.
Rotacionando um objeto na tela
Se você tem um objeto e quer rotacioná-lo, você pode fazer da mesma forma que se fosse movê-lo. Isto é, tudo o que você precisa é uma velocidade para adicionar ao seu ângulo. Se você adicionar 1 a um ângulo em cada frame então o objeto pareceria rotacionar no sentido dos ponteiros do relógio.
Nós usamos self.angle porque nós queremos adicionar ao ângulo em que o sprite já está. Se nós apenas ajustarmos o ângulo para 1, então o objeto sempre estaria no ângulo 1.
Nós também multiplicamos o +1 por dt para fazer esse objeto rotacionar por um grau, a cada segundo, to make this object rotate by 1 degree, every second, ao invés de em cada frame. Isso é realmente lento! Você pode fazer a velocidade aumentar adicionando um número maior ao ângulo do sprite, mas sempre tenha certeza que está usando dt. Isso garantirá que o jogo rode mais "suavemente" mesmo que a taxa de frames mude (você pode encontrar mais se procurar por dt no manual).
Mexa bastante com isso! Mude os números e teste. As aplicações para isso são muitas. Toda vez que você vir um objeto em um jogo rotacionando, ele está simplesmente mudando seu ângulo, frame a frame, em uma determinada quantidade de tempo.
Avise-me se houver qualquer dúvida!
Não entende o espaço da tela? Veja esse tutorial para o básico:
Entendendo posição na tela e velocidade