Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Ontem à(s) 13:33
» É possível fazer istó no game maker
por William Lima Ontem à(s) 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
[RESOLVIDO]Duvida - Movimento Isométrico
4 participantes
Página 1 de 1
[RESOLVIDO]Duvida - Movimento Isométrico
É 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.
//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- Data de inscrição : 04/10/2012
Reputação : 0
Número de Mensagens : 7
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [RESOLVIDO]Duvida - Movimento Isométrico
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
}
Thiago_o_programador- Games Ranking :
Notas recebidas : D - C - D - C
Data de inscrição : 14/05/2009
Reputação : 7
Número de Mensagens : 713
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 1
x 0 x 0 x 0
Re: [RESOLVIDO]Duvida - Movimento Isométrico
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).
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.
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).
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.Com uma régua de 360º testeis vários ângulos mas o sprite não movimentou corretamente.
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- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: [RESOLVIDO]Duvida - Movimento Isométrico
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
Nehorus- Data de inscrição : 04/10/2012
Reputação : 0
Número de Mensagens : 7
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [RESOLVIDO]Duvida - Movimento Isométrico
.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- Games Ranking :
Notas recebidas : D+B+B+C+A
Data de inscrição : 24/08/2009
Reputação : 31
Número de Mensagens : 1101
Prêmios :
x 0 x 0 x 0
x 1 x 1 x 0
x 0 x 0 x 0
Re: [RESOLVIDO]Duvida - Movimento Isométrico
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"
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- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: [RESOLVIDO]Duvida - Movimento Isométrico
Ok's Vou baixar o drive do meu scanner eu vou mostrar no papel !
https://2img.net/r/ihimg/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.
https://2img.net/r/ihimg/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- Data de inscrição : 04/10/2012
Reputação : 0
Número de Mensagens : 7
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [RESOLVIDO]Duvida - Movimento Isométrico
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.
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- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Re: [RESOLVIDO]Duvida - Movimento Isométrico
Se alguém souber movimentar isometricamente usando esse método posta aqui
Nehorus- Data de inscrição : 04/10/2012
Reputação : 0
Número de Mensagens : 7
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [RESOLVIDO]Duvida - Movimento Isométrico
.Fiz um exemplo aqui,de uma olhada.
https://www.dropbox.com/s/040wild2qlp3gk7/isometrico.gmk
https://www.dropbox.com/s/040wild2qlp3gk7/isometrico.gmk
Thyago- Games Ranking :
Notas recebidas : D+B+B+C+A
Data de inscrição : 24/08/2009
Reputação : 31
Número de Mensagens : 1101
Prêmios :
x 0 x 0 x 0
x 1 x 1 x 0
x 0 x 0 x 0
Re: [RESOLVIDO]Duvida - Movimento Isométrico
Muito grato Thyago não sei como agradece!
Nehorus- Data de inscrição : 04/10/2012
Reputação : 0
Número de Mensagens : 7
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [RESOLVIDO]Duvida - Movimento Isométrico
.Que isso cara,precisando é só falar.
Thyago- Games Ranking :
Notas recebidas : D+B+B+C+A
Data de inscrição : 24/08/2009
Reputação : 31
Número de Mensagens : 1101
Prêmios :
x 0 x 0 x 0
x 1 x 1 x 0
x 0 x 0 x 0
Re: [RESOLVIDO]Duvida - Movimento Isométrico
Porque com os meus angulos não funfa ? Estou sendo muito exigente
Nehorus- Data de inscrição : 04/10/2012
Reputação : 0
Número de Mensagens : 7
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [RESOLVIDO]Duvida - Movimento Isométrico
,Veja por exemplo isso que voce fez é impossivel de acontecer...e tem mais erros.
.Como vai ser maior que 300 e menor que 240?
.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- Games Ranking :
Notas recebidas : D+B+B+C+A
Data de inscrição : 24/08/2009
Reputação : 31
Número de Mensagens : 1101
Prêmios :
x 0 x 0 x 0
x 1 x 1 x 0
x 0 x 0 x 0
Re: [RESOLVIDO]Duvida - Movimento Isométrico
Pode crer algun dias sem dormi vou pirar
Nehorus- Data de inscrição : 04/10/2012
Reputação : 0
Número de Mensagens : 7
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Tópicos semelhantes
» [Resolvido]Duvida com movimento
» [RESOLVIDO]Movimento em RPG-Dúvida
» [Resolvido]Duvida no movimento
» [RESOLVIDO] Dúvida com movimento de objeto
» [Resolvido][Duvida] Movimento Todo Pelo Mouse
» [RESOLVIDO]Movimento em RPG-Dúvida
» [Resolvido]Duvida no movimento
» [RESOLVIDO] Dúvida com movimento de objeto
» [Resolvido][Duvida] Movimento Todo Pelo Mouse
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos