[RESOLVIDO]Duvida - Movimento Isométrico

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

[RESOLVIDO]Duvida - Movimento Isométrico

Mensagem por Nehorus em Qui 04 Out 2012, 13:11

É possível adaptar esse código do usuário CPinheiro, para movimento isométrico ?

//Define variáveis:
sprcima=argument0; //Sprite para cima
sprbaixo=argument1; //Sprite para baixo
spresq=argument2; //Sprite para a esquerda
sprdir=argument3; //Sprite para a direita

if direction>=45 and direction<=135
{
sprite_index=sprcima
}

if direction>=225 and direction<=315
{
sprite_index=sprbaixo
}

if direction<=225 and direction>=135
{
sprite_index=spresq
}

if direction<=45 or direction>=315
{
sprite_index=sprdir
}

Com uma régua de 360º testeis vários ângulos mas o sprite não movimentou corretamente.
Obs: Meu primeiro post.


Última edição por Nehorus em Sex 05 Out 2012, 11:14, editado 1 vez(es)

Nehorus

Número de Mensagens : 7
Data de inscrição : 04/10/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO]Duvida - Movimento Isométrico

Mensagem por Thiago_o_programador em Qui 04 Out 2012, 13:30

Tente isso:
Código:
if direction>=45 and direction<=135
{speed=5
sprite_index=sprcima
}

if direction>=225 and direction<=315
{speed=5
sprite_index=sprbaixo
}

if direction<=225 and direction>=135
{speed=5
sprite_index=spresq
}

if direction<=45 or direction>=315
{speed=5
sprite_index=sprdir
}
Obs.: não havia nenhum code para a movimentação, esse era o problema

Thiago_o_programador

Ranking : Nota D
Número de Mensagens : 709
Idade : 19
Data de inscrição : 14/05/2009
Notas recebidas : D - C - D - C
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://www.jogosdahora.maisblog.net

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO]Duvida - Movimento Isométrico

Mensagem por saim em Qui 04 Out 2012, 13:34

Olá, Nehorus, bem-vindo ao fórum.
O código apresentado não movimenta o objeto, apenas define em quais ângulos de movimento deve-se usar cada sprite. Adaptar isso pra uma movimentação isométrica é fácil, basta alterar os valores. E, claro, tomar cuidado pros valores de direction estarem entre 0 e 360 (se estiver a -180, por exemplo, a instância estará se movendo para a esquerda com a sprite de movimentação para a direita).
Com uma régua de 360º testeis vários ângulos mas o sprite não movimentou corretamente.
Ela se movimentou de alguma forma, pelo menos? É que sendo seu primeiro post, eu parto do princípio que você é iniciante e comete os erros de iniciantes. Um deles é definir a direção e esquecer de definir a velocidade. Se a velocidade for zero, a instância não vai se movimentar.

Nehorus, sugiro que você busque, no manual, algumas definições. Tente entender o que é objeto (object), instância (instance), sprite e mask. Dizer "objeto" quando queremos dizer "instância" é aceitável, mas dizer "sprite" acaba gerando confusão na cabeça de quem vai responder. E, já que você vai pesquisar mesmo, acrescente as definições de id, other, sprite_index, image_index e, se tiver tempo, parent. Se achar que existem definições parecidas, procure qual a diferença entre elas.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO]Duvida - Movimento Isométrico

Mensagem por Nehorus em Qui 04 Out 2012, 13:52

Não sou iniciante no Game Maker só fiquei um tempo sem programar e agora estou de volta.Aqui no forum tem um tópico do joaoneto que mostra como movimentar um personagem isométrico, mas é complicado.Algum tempo tinha conseguido movimentar(nas diagonais e mudar o sprite) usando esse método scratch


Nehorus

Número de Mensagens : 7
Data de inscrição : 04/10/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO]Duvida - Movimento Isométrico

Mensagem por Thyago em Qui 04 Out 2012, 13:56

.Esse é um script para mudar para a sprite correta,o movimento é feito a parte,conforme a direção do objeto ele ira mudar para a sprite adequada ,observando o desenho abaixo da para se ter uma noção de como adaptei,veja.



Código:
//Define variáveis:
sprcima=argument0; //Sprite para cima
sprbaixo=argument1; //Sprite para baixo
spresq=argument2; //Sprite para a esquerda
sprdir=argument3; //Sprite para a direita

if direction<90
{
sprite_index=sprcima
}

if direction>=180 and direction<=270
{
sprite_index=sprbaixo
}

if direction>=90 and direction<=180
{
sprite_index=spresq
}

if direction>=270
{
sprite_index=sprdir
}

Thyago

Ranking : Nota B
Número de Mensagens : 1092
Idade : 30
Data de inscrição : 24/08/2009
Notas recebidas : D+B+B+C+A
Reputação : 31
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 1
   :

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO]Duvida - Movimento Isométrico

Mensagem por saim em Qui 04 Out 2012, 14:04

Bom, como eu disse, o script só define a sprite_index. Pra se movimentar efetivamente, você precisa de mais código (ou outro script). Algo que defina a direção e a velocidade de movimentação. Aí, você usa esse código adaptado pra mostrar a sprite correta.
Aí você me pergunta "e qual o código pra movimentação isométrica?". Não sei. Tem mais de um jeito de chegar no mesmo resultado, e eu nem tenho certeza de qual o resultado que você quer chegar.
Na verdade, tenho a impressão que se você explicar tudo em detalhes, já vai ter uma idéia boa de como fazer. Detalhes como:
"ao apertar apenas a tecla pra cima, a personagem move-se num ângulo de 60°, ao apertar apenas a tecla pra direita, ela se move num ângulo de 0°, (...), sendo que a movimentação é sempre nesses ângulos e sempre numa velocidade constante de 5 pixels/step"

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO]Duvida - Movimento Isométrico

Mensagem por Nehorus em Qui 04 Out 2012, 14:10

Ok's Vou baixar o drive do meu scanner eu vou mostrar no papel !

http://imageshack.us/photo/my-images/843/untitld1j.jpg/

round(point_direction(target_x,target_y,x,y)/45)

if mouse_check_button_released(mb_left)
{

target_x = round(mouse_x)
target_y = round(mouse_y)

move=1
}

if move = 1 {
image_speed = 0.2;
if (distance_to_point(target_x,target_y) > 5)
{
move_towards_point(target_x,target_y,2);
}else
{
speed=0
image_speed=0
move=0
}
}

if move=1
{
if direction>60 and direction<120
{speed=5
sprite_index=spr_up
}

if direction>300 and direction<240
{speed=5
sprite_index=spr_down
}

if direction>330 and direction<30
{speed=5
sprite_index=spr_left
}

if direction>300 and direction<330
{speed=5
sprite_index=spr_so
}

if direction>30 and direction<60
{speed=5
sprite_index=spr_ne
}

if direction>240 and direction<210
{speed=5
sprite_index=spr_se
}

if direction>210 and direction<150
{speed=5
sprite_index=spr_right
}

if direction>150 and direction<120
{speed=5
sprite_index=spr_no
}

}

Mas não funfa

#Editado por luiz_eldorado:
Post-triplo. Mensagens fundidas. Mas atenção da próxima vez! Alertado.

Nehorus

Número de Mensagens : 7
Data de inscrição : 04/10/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO]Duvida - Movimento Isométrico

Mensagem por saim em Qui 04 Out 2012, 16:54

ok, antes de comentar o código, deixa eu esclarecer que não tenho como ver as imagens do imageshack daqui, então todo o comentário é baseado só no código.

Primeiro, ele não tem nada de isométrico além das sprites. Quer dizer, dá pra andar em qualquer direção, com esse código, sempre com a mesma velocidade. Não que isso seja um problema.

Segundo, alguns intervalos têm que ser revistos. Por exemplo, pra usar o spr_dwn, a direction tem que ser MAIOR que 300 e MENOR que 240, ou seja, nunca vai acontecer.

Terceiro, algumas SPRITES têm que ser revistas. Por exemplo, quando a direction for menor que 30 ou maior que 330 (está "and", deveria ser "or"), a sprite deve ser da personagem andando para a direita. Está com o nome "spr_left" (pode ser uma sprite andando pra direita, mas acho pouco provável...).

Quarto, você verifica duas vezes se "move=1". Não é necessário, você pode fazer tudo dentro do mesmo "if", sem diferenças de resultado.

Por último, sugiro usar o evento do mouse pra fazer "move" ser igual a 1, mesmo. Isso é frescura minha, mas quanto menos código você colocar no step, mais rápido será o jogo. Não sei exatamente como funciona a coisa internamente, mas acho que usar um evento específico libera a memória que seria usada a cada step pra verificar se o botão do mouse foi mesmo solto.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO]Duvida - Movimento Isométrico

Mensagem por Nehorus em Qui 04 Out 2012, 19:03

Se alguém souber movimentar isometricamente usando esse método posta aqui Smile

Nehorus

Número de Mensagens : 7
Data de inscrição : 04/10/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO]Duvida - Movimento Isométrico

Mensagem por Thyago em Qui 04 Out 2012, 19:36

.Fiz um exemplo aqui,de uma olhada.

https://www.dropbox.com/s/040wild2qlp3gk7/isometrico.gmk

Thyago

Ranking : Nota B
Número de Mensagens : 1092
Idade : 30
Data de inscrição : 24/08/2009
Notas recebidas : D+B+B+C+A
Reputação : 31
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 1
   :

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO]Duvida - Movimento Isométrico

Mensagem por Nehorus em Qui 04 Out 2012, 20:00

Muito grato Thyago não sei como agradece! farao

Nehorus

Número de Mensagens : 7
Data de inscrição : 04/10/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO]Duvida - Movimento Isométrico

Mensagem por Thyago em Qui 04 Out 2012, 20:03

.Que isso cara,precisando é só falar.

Thyago

Ranking : Nota B
Número de Mensagens : 1092
Idade : 30
Data de inscrição : 24/08/2009
Notas recebidas : D+B+B+C+A
Reputação : 31
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 1
   :

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO]Duvida - Movimento Isométrico

Mensagem por Nehorus em Qui 04 Out 2012, 20:24

Porque com os meus angulos não funfa ? farao Estou sendo muito exigente Happy

Nehorus

Número de Mensagens : 7
Data de inscrição : 04/10/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO]Duvida - Movimento Isométrico

Mensagem por Thyago em Qui 04 Out 2012, 20:38

,Veja por exemplo isso que voce fez é impossivel de acontecer...e tem mais erros.
.Como vai ser maior que 300 e menor que 240?

Código:
if direction>300 and direction<240
{speed=5
sprite_index=spr_down
}

Thyago

Ranking : Nota B
Número de Mensagens : 1092
Idade : 30
Data de inscrição : 24/08/2009
Notas recebidas : D+B+B+C+A
Reputação : 31
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 1
   :

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO]Duvida - Movimento Isométrico

Mensagem por Nehorus em Qui 04 Out 2012, 21:38

Pode crer What a Face algun dias sem dormi vou pirar affraid

Nehorus

Número de Mensagens : 7
Data de inscrição : 04/10/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [RESOLVIDO]Duvida - Movimento Isométrico

Mensagem por Conteúdo patrocinado Hoje à(s) 08:29


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum