Página 1 de 1
Multi direções com personagens isométricos
Enviado: Seg Out 10, 2016 11:00 pm
por leandroz3ta
Olá pessoal.
Estou com uma dúvida simples.
Estou criando um jogo estilo Pokemon GO.
Criei a movimentação do personagem em 360º e preciso que seja selecionado o sprite correspondente a direção em que o personagem se desloca.
Os sprites são isométricos para facilitar este processo.
Como faço este procedimento via código?
Re: Multi direções com personagens isométricos
Enviado: Ter Out 11, 2016 2:30 am
por Drako
Uma maneira simples de se fazer isso é definindo constantes para as direções:
Código: Selecionar todos
// Defina como macros!
RIGHT : 000
LEFT : 180
UP : 090
DOWN : 270
E por ai vai... Defina para cada direção seu ângulo correspondente. Depois você deve definir as configurações inicias no seu objeto "player":
Código: Selecionar todos
dir := 270; // Ângulo inicial
spr := spr_down; // Sprite inicial
Você pode fazer a verificação da direção e apontar o sprite que deve ser exibido, dessa maneira:
Código: Selecionar todos
switch (keyboard_key) {
case vk_right:
dir := RIGHT;
spr := spr_right;
break;
case vk_left:
dir := LEFT;
spr := spr_left;
break;
case vk_up:
dir := UP;
spr := spr_up;
break;
case vk_down:
dir := DOWN;
spr := spr_down;
break;
}
Obs: Este é um exemplo, meramente "ilustrativo". Tem como objetivo apenas "dar uma ideia" de como o processo, em questão pode ser executado!
Re: Multi direções com personagens isométricos
Enviado: Ter Out 11, 2016 11:18 pm
por leandroz3ta
Drako escreveu:Uma maneira simples de se fazer isso é definindo constantes para as direções:
Código: Selecionar todos
// Defina como macros!
RIGHT : 000
LEFT : 180
UP : 090
DOWN : 270
E por ai vai... Defina para cada direção seu ângulo correspondente. Depois você deve definir as configurações inicias no seu objeto "player":
Código: Selecionar todos
dir := 270; // Ângulo inicial
spr := spr_down; // Sprite inicial
Você pode fazer a verificação da direção e apontar o sprite que deve ser exibido, dessa maneira:
Código: Selecionar todos
switch (keyboard_key) {
case vk_right:
dir := RIGHT;
spr := spr_right;
break;
case vk_left:
dir := LEFT;
spr := spr_left;
break;
case vk_up:
dir := UP;
spr := spr_up;
break;
case vk_down:
dir := DOWN;
spr := spr_down;
break;
}
Obs: Este é um exemplo, meramente "ilustrativo". Tem como objetivo apenas "dar uma ideia" de como o processo, em questão pode ser executado!
Cara valeu pelas dicas! Uma coisa que esqueci de mencionar no tópico é que toda a movimentação do personagem será feita por clique de mouse, ou seja, ele seguirá para a direção onde ou o clique na tela, com isso o ângulo irá variar

entendi um pouco da lógica dos breaks, mas ainda estou confuso em como irei definir em qual momento irei virar para leste, oeste, norte,nordeste, noroeste, sul, sudeste, sudoeste...
