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 :loco:
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... :pc: