Conectar-se
Quem está conectado
28 usuários online :: 4 usuários cadastrados, 1 Invisível e 23 Visitantes

gart30, hendrickxr, PedroX, rafaelviodres1

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Ranking : Nota D
Notas recebidas : C+D
Data de inscrição : 09/09/2011
Número de Mensagens : 231
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 2
Ver perfil do usuário

[Ajuda] Como fazer parede em jogos de plataforma.

em Qui 12 Jan 2012, 12:21
como dito no titulo do topico,eu queria saber como fazer um objeto que tem o objetivo dela de agir como uma parede,por que no meu projeto,eu quero por algo que n faça o personagem agarrar,poderiam me ajudar?








-Grato
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 07/06/2011
Número de Mensagens : 673
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: [Ajuda] Como fazer parede em jogos de plataforma.

em Qui 12 Jan 2012, 12:47
Ué, cria um obj_parede e no evento de colisão com o player você coloca speed=0. É isso que você quer?
avatar
Ranking : Nota D
Notas recebidas : C+D
Data de inscrição : 09/09/2011
Número de Mensagens : 231
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 2
Ver perfil do usuário

Re: [Ajuda] Como fazer parede em jogos de plataforma.

em Qui 12 Jan 2012, 12:52
isso vai fazer o personagem n se mover .
Resumindo ele iria agarrar =/
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 07/06/2011
Número de Mensagens : 673
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: [Ajuda] Como fazer parede em jogos de plataforma.

em Qui 12 Jan 2012, 13:11
Na verdade o obj_parede vai ficar parado. Caso fosse:

Código:
with (other)
{
speed=0
}

Estaria errado, pois o player ficaria parado. Se você quer que a parede fique paralisada quando colidir com o player, basta apenas colocar speed=0 no obj_parede.

Até mais!
avatar
Ranking : Nota D
Notas recebidas : C+D
Data de inscrição : 09/09/2011
Número de Mensagens : 231
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 2
Ver perfil do usuário

Re: [Ajuda] Como fazer parede em jogos de plataforma.

em Qui 12 Jan 2012, 13:56
ah............
eu acho que n entendeu nao e?

E o seguinte,nos jogos de plataforma,o personagem anda no chao normal ne?

mais quando ele colidi com a parede
isso faz ele ser impedido de se mover para o lado que ele quer ir,mais ele pode voltar.
eu quero isso,que o personagem ao colidir com ele faça que impeça-o de prosseguir

Resumindo:uma parede basica para jogo de plataforma
avatar
Data de inscrição : 12/01/2012
Número de Mensagens : 107
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: [Ajuda] Como fazer parede em jogos de plataforma.

em Qui 12 Jan 2012, 14:02
Editado por saim: não faça flood. Leia as regras do fórum.
Usuário alertado.
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 28/10/2008
Número de Mensagens : 819
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: [Ajuda] Como fazer parede em jogos de plataforma.

em Qui 12 Jan 2012, 15:01
Procure colocar a informação da colisão na tecla que ele usa para andar, ex:

Código:
if keyboard_check(vk_left) and place_free(x-5,y) {aqui o comando para ele andar, seja o speed ou a soma no x}
else {caso seja o speed é só zerar ele, speed=0}
Só detalhando os comandos que eu usei:
A função: "if" seria o mesmo que dizer "se".
A função: keyboard_check, ver se a tecla foi pressionada.
A função: vk_left, é como o GM reconhece a tecla direcional esquerda, masi teclas no manual.
A função: and, seria como um "e", ex: pula "e" corre... Suspect
A função: place_free(), é uma especie de pergunta "tem alguma coisa neste lugar?"
A função: "x" e "y", são coordenadas cartesianas, mais informação no google.
A função: else, é uma resposta "se if não for verdadeiro"

Código traduzido:

Se apertar a tecla para a esquerda e na posição de x-5 e y não tiver nada então ele deve andar para a esquerda.

Se não ele tem que ficar parado.

Faça esta função para a direita também, lembrando que se você diminui o "x" ele vai para a esquerda.
Já respeitando a ideia do fórum, de não dar os códigos completos, note que você terá que pensar um pouco como fazer para ir para a direita, ok?
avatar
Ranking : Nota D
Notas recebidas : C+D
Data de inscrição : 09/09/2011
Número de Mensagens : 231
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 2
Ver perfil do usuário

Re: [Ajuda] Como fazer parede em jogos de plataforma.

em Qui 12 Jan 2012, 15:17
@CRP-Max escreveu:Procure colocar a informação da colisão na tecla que ele usa para andar, ex:

Código:
if keyboard_check(vk_left) and place_free(x-5,y) {aqui o comando para ele andar, seja o speed ou a soma no x}
else {caso seja o speed é só zerar ele, speed=0}

Faça esta função para a direita também, lembrando que se você diminui o "x" ele vai para a esquerda.
Já respeitando a ideia do fórum, de não dar os códigos completos, note que você terá que pensar um pouco como fazer para ir para a direita, ok?

bem isso ajudo,mais você resolveu somente 1 dos problemas,bem o que eu queria que acontece,que se meu personagem colidir com a parede quando estiver pulando n aconteça isso entendeu?

por exemplo,meu personagem cai,e ele bate na parede,no momento ele vai agarrar,mais se ele pisar no chao, ele n agarra mais se ele estiver caindo aconteçe isso,podem me ajudar com esse problema?
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 28/10/2008
Número de Mensagens : 819
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: [Ajuda] Como fazer parede em jogos de plataforma.

em Qui 12 Jan 2012, 15:20
Se a parede for solida e mais alta que o pulo do personagem este comando já resolve isso também.
avatar
Ranking : Nota D
Notas recebidas : C+D
Data de inscrição : 09/09/2011
Número de Mensagens : 231
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 2
Ver perfil do usuário

Re: [Ajuda] Como fazer parede em jogos de plataforma.

em Qui 12 Jan 2012, 15:58
sim a parede e solida,porem quando o personagem cai,ou quando esta caindo,ele simplesmente gruda na parede,mais ele n gruda na parede quando eu estiver tentando pular a parede(quando eu estiver no chao)

avatar
Ranking : Sem avaliações
Data de inscrição : 11/10/2009
Número de Mensagens : 2184
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: [Ajuda] Como fazer parede em jogos de plataforma.

em Qui 12 Jan 2012, 16:07
Hmmm... Então na colisão com a parede, faz o seguinte:
Código:
move_contact_solid(gravity_direction, vspeed)
"Informação":
move_contact_solid(direction, maxdist)
direction = A direção do contato
maxdist = O limite de velocidade até o contato

O que essa função faz é ir na determinada direção até achar um objeto sólido, daí o nome (praticamente tudo no GM faz jus ao nome).
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 28/10/2008
Número de Mensagens : 819
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: [Ajuda] Como fazer parede em jogos de plataforma.

em Qui 12 Jan 2012, 16:53
Tem um sprite diferente para quando ele pula?
Se tiver esse é o problema, faça um sprite quadrado do tamanho do seu player e use como mascara, assim mesmo que ele mude de sprite não tem o risco de enroscar.
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6036
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: [Ajuda] Como fazer parede em jogos de plataforma.

em Qui 12 Jan 2012, 17:10
Se a parede for sólida, basta adicionar um evento de colisão que ele já vai parar. No entanto, ele ainda deve se mover, então coloque no evento de colisão:
Código:
 vspeed+=gravity;
Isso já deve resolver.
avatar
Ranking : Nota D
Notas recebidas : C+D
Data de inscrição : 09/09/2011
Número de Mensagens : 231
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 2
Ver perfil do usuário

Re: [Ajuda] Como fazer parede em jogos de plataforma.

em Qui 12 Jan 2012, 17:12
@CRP-Max escreveu:Tem um sprite diferente para quando ele pula?
Se tiver esse é o problema, faça um sprite quadrado do tamanho do seu player e use como mascara, assim mesmo que ele mude de sprite não tem o risco de enroscar.

bem,assim ele n vai agarrar ,mais isso so funcionara se o personagem estiver em contato com o chao,se eu estiver se movendo no pulo,ele agarra.

acho que assim expliquei melhor.
caso nao entenderam o problema pede para eu explicar melhor ok?
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6036
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: [Ajuda] Como fazer parede em jogos de plataforma.

em Qui 12 Jan 2012, 17:15
Então explique melhor.
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 1
   : 0
   : 3
Ver perfil do usuário

Re: [Ajuda] Como fazer parede em jogos de plataforma.

em Qui 12 Jan 2012, 17:24
O problema, me parece claro, é que o personagem está entrando alguns pixels na parede. Isso faz ele agarrar mesmo, é o primeiro bug que muitos de nós conhecemos e que nos acompanha a vida toda.

Você pode usar uma mask constante, como o CRP-Max sugeriu. Pra maioria dos códigos, isso funciona. Porque você não posta que códigos está usando pra movimentação e colisão?
Outra coisa que é bom perguntar é o formato dessas suas paredes. Estou supondo que são quadrados 32x32. É isso mesmo?
Finalmente, você diz "paredes", mas estou com a impressão que é a mesma coisa que "chão", ou seja, que é o mesmo objeto que o piso (normalmente, é). Se não for, isso pode fazer alguma diferença, então tenho que perguntar: é o mesmo objeto que você usa como piso?
avatar
Ranking : Nota D
Notas recebidas : C+D
Data de inscrição : 09/09/2011
Número de Mensagens : 231
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 2
Ver perfil do usuário

Re: [Ajuda] Como fazer parede em jogos de plataforma.

em Qui 12 Jan 2012, 17:32
Pedrø escreveu:Então explique melhor.

acho que essas duas imagens iram dar uma explicada melhor.




viu e esse o problema.


-o que aprendi hoje:
Uma Imagem Vale mais do que mil palavras ,ou não né xD
avatar
Ranking : Nota A
Notas recebidas : A
Data de inscrição : 13/10/2011
Número de Mensagens : 106
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://bigleafeater.tumblr.com/

Re: [Ajuda] Como fazer parede em jogos de plataforma.

em Qui 12 Jan 2012, 18:07
Quando você vai fazer uma pergunta você tem que espicificar como o seu jogo funciona.
Normalmente em jogos de plataforma eu coloco a movimentação através do x e a gravidade através da vspeed.

Simplesmente no código de colisão:(supondo que a movimentação é 10 pixels por step)
If keyboard_check(vk_right){x-=10}
If keyboard_check(vk_right){x+=10}
isto faria com que ele fosse impedido de se movimentar sem impedir que a gravidade parasse. (lógico que tem 3000000000000 formas de se fazer isto. esta é a que eu prefiro utilizar por ser fácil)
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 28/10/2008
Número de Mensagens : 819
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: [Ajuda] Como fazer parede em jogos de plataforma.

em Qui 12 Jan 2012, 18:14
Ele para no ar, enroscado na parede...
Viu com a minha explicação todos teriam entendido.
Você esta zerando o vspeed ou a gravidade, quando ele entra em contato com esta parede?
Eu aconselho a você fazer pequenas sprites de 32X32 invisíveis e usar como chão e parede, e não usar o sprite do cenário.
Fica mais fácil.

As sprites pretas são o chão e as paredes e as vermelhas são onde o player não pode cair, ou morre.
avatar
Ranking : Nota D
Notas recebidas : C+D
Data de inscrição : 09/09/2011
Número de Mensagens : 231
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 2
Ver perfil do usuário

Re: [Ajuda] Como fazer parede em jogos de plataforma.

em Qui 12 Jan 2012, 19:29
@CRP-Max escreveu:Ele para no ar, enroscado na parede...
Viu com a minha explicação todos teriam entendido.
Você esta zerando o vspeed ou a gravidade, quando ele entra em contato com esta parede?
Eu aconselho a você fazer pequenas sprites de 32X32 invisíveis e usar como chão e parede, e não usar o sprite do cenário.
Fica mais fácil.

As sprites pretas são o chão e as paredes e as vermelhas são onde o player não pode cair, ou morre.
eu estou usando o vspeed,para isso ,e sobre os objetos que estavam invisiveis,eles estao envolta do as sprites....

caso ninguem resolva e melhor criar um tuto como fazer paredes,que esta complicado =/


outra coisa:

eu uso para movimentaçao esse codigo:
keyboard_check(vk_left/right) {hspeed = -1/1}

na colisão com a parede/chão (obj_bloco):

if vspeed > 0 and not place_free(x,y + vspeed){//***se a velocidade vertical for maior do que 0 e não tiver o mesmo valor da vel vertical abaixo...
move_contact_solid(direction,vspeed)//mover na direção do bloco, na direcçao e com a vel.vertical
}
vspeed = 0//***velocidade vertical = a 0(esta no chao)
noar = 0// variavel,que faz não permitir que o personagem usem a certa skill no chão.


Agora a gravidade:
gravity = 1 // gravidade igual a 1
gravity_direction = 270 // direção da gravidade igual a 270

so isso que tem aver com a colisão do personagem ao bloco(parede ou chão).


acho que dessa vez eu expliquei melhor =/
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum