O movimental radial é usado principalmente em jogos Top Down (vista superior). Ele serve para garantir que o jogador se mova na mesma velocidade para qualquer direção. Neste tutorial veremos o movimento radial para movimento em 8 direções.
vertical = keyboard_check(ord('S')) - keyboard_check(ord('W'))
horizontal = keyboard_check(ord('D')) - keyboard_check(ord('A'))
if !(vertical = 0 && horizontal = 0) // Checa se há movimento na vertical ou na horizontal
{
horizontal *= velocidade
vertical *= velocidade
if !place_meeting(x + horizontal, y, obj_wall)
{
x += horizontal
}
if !place_meeting(x, y + vertical, obj_wall)
{
y += vertical
}
}
Esse código fará com o personagem se mova para 8 direções, porém, quando mover-se na diagonal ele irá mais rápido se compararmos o quanto ele se distancia do ponto de partida.
Para corrigir essa diferença podemos usar este código:
Create Event
seno45 = sin(45)
Step Event
vertical = keyboard_check(ord('S')) - keyboard_check(ord('W'))
horizontal = keyboard_check(ord('D')) - keyboard_check(ord('A'))
if !(vertical = 0 && horizontal = 0) // Checa se há movimento na vertical ou na horizontal
{
vertical *= velocidade
horizontal *= velocidade
if vertical != 0 && horizontal != 0 // Checa se há movimento na vertical e horizontal simultâneamente
{
vertical *= seno45 // Reduz o movimento vertical
horizontal *= seno45 // Reduz o movmento horizontal
}
if !place_meeting(x + horizontal, y, obj_wall)
{
x += horizontal
}
if !place_meeting(x, y + vertical, obj_wall)
{
y += vertical
}
}
O fator de correção é o seno de 45 graus pois este é o ângulo do movimento feito quando nos movemos na diagonal.
Eu preciso botar as teclas para ele andar cara?
ResponderExcluir