Alinhar

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

Alinhar

Mensagem por Ueliton em Seg 20 Fev 2012, 22:18

Como se faz para o objeto sempre ficar alinhado em uma posição de 32 pixels para mais ou para menos.

Explicando melhor, se o jogador pressionar alguma tecla ele é alinhado só que entre as posições: 32, 64, 96, 128, ect, até 640 (sempre aumentando 32).

Ueliton

Ranking : Nota D
Número de Mensagens : 128
Data de inscrição : 29/10/2011
Notas recebidas : E+D
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://gmls.forumeiros.com/

Voltar ao Topo Ir em baixo

Re: Alinhar

Mensagem por William Lima em Seg 20 Fev 2012, 22:21

Existe a função place_snapped(x,y) que checa se você está alinhado...
basta fazer com que ao soltar a tecla de movimento (rpg com grid) somente pare se você estiver alinhado com a grid do place_snapped()

William Lima

Ranking : Nota A
Número de Mensagens : 426
Idade : 22
Data de inscrição : 10/09/2010
Notas recebidas : C+A+A+B+A
Reputação : 10
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 2
   : 0

http://williammustaffa.blogspot.com

Voltar ao Topo Ir em baixo

Re: Alinhar

Mensagem por Thyago em Seg 20 Fev 2012, 22:23

Ou pode colocar isso
Código:
x=(round(x/32))*32;
y=(round(y/32))*32;

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: Alinhar

Mensagem por Ueliton em Seg 20 Fev 2012, 22:28

Nenhum dos 2 funcionou, ou melhor não aconteceu nada.

Ueliton

Ranking : Nota D
Número de Mensagens : 128
Data de inscrição : 29/10/2011
Notas recebidas : E+D
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://gmls.forumeiros.com/

Voltar ao Topo Ir em baixo

Re: Alinhar

Mensagem por Super Maker em Seg 20 Fev 2012, 23:30

Eu faço assim...
Cria um script com o nome "move" e nele você escreve:
Código:
var dir, spd;
dir = argument0;
spd = argument1;
motion_set(dir, spd);
No step do player você edita as funções de comando pra ele andar em grid de 32x32
Código:
//movimentos
var snap;//Verifica se esta alinhado com a grade de 32 x 32 e armazena em "snap"
snap = place_snapped(32, 32);
//mover para esquerda
if (keyboard_check(vk_left)  and snap)
{
move(180,4)
sprite_index = left
};
//mover para direita
if (keyboard_check(vk_right) and snap)
{move(0,4)
sprite_index = right
};
//mover para cima
if (keyboard_check(vk_up)    and snap)
{move(90,4)
sprite_index = up
};
//mover para baixo
if (keyboard_check(vk_down)  and snap)
{move(270,4)
sprite_index = down
};
//não se mover
if (keyboard_check(vk_nokey) and snap){
motion_set(0, 0)
};
if (hspeed <> 0) or (vspeed <> 0)
    image_speed = 0.5
    else
{
    image_speed = 0;
    image_index = 0;
}
Aqui funcionou e aí?

Super Maker

Número de Mensagens : 646
Idade : 33
Data de inscrição : 09/07/2011
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Alinhar

Mensagem por Black Studio em Ter 21 Fev 2012, 00:25

vou dar um exemplo usando as teclas do teclado, pra mover a posicao pra baixo :
Código:
if keyboard_check(vk_down)//se apertar pra baixo
{if y=0 {y=16}//se y=0 entao y=16
else {y=y*2}}// caso contrario a posicao se multiplica por 2 (se estiver em 16, vai pra 32, se estiver em 32, vai pra 64, assim em diante)

Provavelmente nao estava acontecendo nada por que a posicao inicial dele é 0, entao, advinha o que dá multiplicar o 0? Happy

Black Studio

Ranking : Nota C
Número de Mensagens : 337
Idade : 18
Data de inscrição : 19/10/2011
Notas recebidas : C + C
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: Alinhar

Mensagem por Super Maker em Ter 21 Fev 2012, 13:34

Mas Funkbuster, se ele fizer assim vai perecer que ele ta se teletransportando de um ponto pro outro. Se ele usar o código que eu postei acima, vai de pixel em pixel até chegar no ponto certo e se a tecla continuar pressionada ele continua sem parar até que a tecla seja solta.

Super Maker

Número de Mensagens : 646
Idade : 33
Data de inscrição : 09/07/2011
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Alinhar

Mensagem por luiz_eldorado em Ter 21 Fev 2012, 15:11

Tem um jeito beeem mais simples:
Código:
if place_snapped(32,32) {
hspeed=((keyboard_check(vk_right)*place_free(x+4,y))-(keyboard_check(vk_left)*place_free(x-4,y)))*4
//faz o mesmo com o "vspeed"
}
Até mais!

luiz_eldorado

Ranking : Nota C
Número de Mensagens : 928
Idade : 17
Data de inscrição : 30/07/2011
Notas recebidas : C
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://luizpontes.tk/

Voltar ao Topo Ir em baixo

Re: Alinhar

Mensagem por Need 90 em Ter 21 Fev 2012, 15:30

Nossa pra que tanto, faça assim :
Código:

move_snap(32,32); //Alinha ao grid

if keyboard_check_pressed(vk_up){y-=32} //Move pra cima
if keyboard_check_pressed(vk_down){y+=32} //Move pra baixo
if keyboard_check_pressed(vk_left){x-=32} //Move para esquerda
if keyboard_check_pressed(vk_right){x+=32} //Move para direita

Olha um exemplo de como vai ficar :
http://dl.dropbox.com/u/46263990/Teste/index.html

É tão simples.

Need 90

Ranking : Nota B
Número de Mensagens : 787
Data de inscrição : 16/01/2012
Notas recebidas : D+A+B
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://need90games.blogspot.com.br

Voltar ao Topo Ir em baixo

Re: Alinhar

Mensagem por luiz_eldorado em Ter 21 Fev 2012, 15:34

Need 90, novamente como ja foi dito, isto vai teletransportar o objeto. O meu codigo e o de alguem ali em cima anda pixel-per-pixel. E o seu ele pode sair numa arrancada com tudo.
-----ED
Quer dizer, ele vai muito lento. Tem que ficar apertando varias vezes pra andar.
-----ED2
Trocentas Quatrocentas mensagens!!!


Última edição por luiz_eldorado em Ter 21 Fev 2012, 15:38, editado 1 vez(es)

luiz_eldorado

Ranking : Nota C
Número de Mensagens : 928
Idade : 17
Data de inscrição : 30/07/2011
Notas recebidas : C
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://luizpontes.tk/

Voltar ao Topo Ir em baixo

Re: Alinhar

Mensagem por Need 90 em Ter 21 Fev 2012, 15:37

Na verdade não, pois está no pressed.

Ele não vai arrancar e nem teletransportar, olha o exemplo que eu ponhei abaixo do código.

Need 90

Ranking : Nota B
Número de Mensagens : 787
Data de inscrição : 16/01/2012
Notas recebidas : D+A+B
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://need90games.blogspot.com.br

Voltar ao Topo Ir em baixo

Re: Alinhar

Mensagem por Super Maker em Ter 21 Fev 2012, 15:54

Se é pra simplificar, ta aqui o meu exemplo bem mais reduzido que antes e funcionando perfeitamente.
Você só tem que colocar no evento step:
Código:
if (keyboard_check(vk_left)  and place_snapped(32, 32)){motion_set(180,4)};
if (keyboard_check(vk_right) and place_snapped(32, 32)){motion_set(0,4)};
if (keyboard_check(vk_up)    and place_snapped(32, 32)){motion_set(90,4)};
if (keyboard_check(vk_down)  and place_snapped(32, 32)){motion_set(270,4)};
if (keyboard_check(vk_nokey) and place_snapped(32, 32)){motion_set(360,0)};
Lembre se de tentar entender os códigos pra que aprenda o porque de cada um deles.
Até mais!

Super Maker

Número de Mensagens : 646
Idade : 33
Data de inscrição : 09/07/2011
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Alinhar

Mensagem por Conteúdo patrocinado Hoje à(s) 22:14


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