Entrar
Últimos assuntos
» Problemas com particulaspor RastaMaan Hoje à(s) 17:03
» Problema ao entrar por uma porta e voltar por ela
por aminaro Seg 06 maio 2024, 10:08
» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43
» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16
» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45
» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18
» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30
» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07
» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45
» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51
» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31
» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11
» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27
» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30
» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17
» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18
» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34
» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13
» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18
» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12
» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02
» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55
» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42
» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56
[Resolvido]Me ajudem a entender esse código
3 participantes
Página 1 de 1
[Resolvido]Me ajudem a entender esse código
Bom, eu estava vendo uma engine de colisão perfeita em rampas, e achei essa engine, porém não posso usar se não entender, pedi ajuda para alguns amigos porém não consegui, eu sei para que serve, é para a movimentação, porém queria saber como funciona cada linha de código que contém o script, queria que vocês me ajudassem, principalmente na parte do for e tipo a variável i, mudará de valor constantemente, poderiam mim dizer também em cada linha qual o seu valor? fico grato desde já! Aquele que me ajudar terá +1 de reputação!!
argument0 = 3
argument1 = vk_up
argument2 = vk_down
argument3 = vk_left
argument4 = vk_right
var i;
if (keyboard_check(argument1))
for (i=argument0;i>=0;i-=1)
if (place_free(x,y-i))
y-=i;
else
{
if (place_free(x-i,y-i))
x-=i/2;
if (place_free(x+i,y-i))
x+=i/2;
}
if (keyboard_check(argument2))
for (i=argument0;i>=0;i-=1)
if (place_free(x,y+i))
y+=i;
else
{
if (place_free(x-i,y+i))
x-=i/2;
if (place_free(x+i,y+i))
x+=i/2;
}
if (keyboard_check(argument3))
for (i=argument0;i>=0;i-=1)
if (place_free(x-i,y))
x-=i;
else
{
if (place_free(x-i,y-i))
y-=i/2;
if (place_free(x-i,y+i))
y+=i/2;
}
if (keyboard_check(argument4))
for (i=argument0;i>=0;i-=1)
if (place_free(x+i,y))
x+=i;
else
{
if (place_free(x+i,y-i))
y-=i/2;
if (place_free(x+i,y+i))
argument0 = 3
argument1 = vk_up
argument2 = vk_down
argument3 = vk_left
argument4 = vk_right
if (keyboard_check(argument1))
for (i=argument0;i>=0;i-=1)
if (place_free(x,y-i))
y-=i;
else
{
if (place_free(x-i,y-i))
x-=i/2;
if (place_free(x+i,y-i))
x+=i/2;
}
if (keyboard_check(argument2))
for (i=argument0;i>=0;i-=1)
if (place_free(x,y+i))
y+=i;
else
{
if (place_free(x-i,y+i))
x-=i/2;
if (place_free(x+i,y+i))
x+=i/2;
}
if (keyboard_check(argument3))
for (i=argument0;i>=0;i-=1)
if (place_free(x-i,y))
x-=i;
else
{
if (place_free(x-i,y-i))
y-=i/2;
if (place_free(x-i,y+i))
y+=i/2;
}
if (keyboard_check(argument4))
for (i=argument0;i>=0;i-=1)
if (place_free(x+i,y))
x+=i;
else
{
if (place_free(x+i,y-i))
y-=i/2;
if (place_free(x+i,y+i))
Última edição por .:Allison:. em Ter 21 Jun 2011, 20:25, editado 1 vez(es)
Re: [Resolvido]Me ajudem a entender esse código
.:Allison:. escreveu:Bom, eu estava vendo uma engine de colisão perfeita em rampas, e achei essa engine, porém não posso usar se não entender, pedi ajuda para alguns amigos porém não consegui, eu sei para que serve, é para a movimentação, porém queria saber como funciona cada linha de código que contém o script, queria que vocês me ajudassem, principalmente na parte do for e tipo a variável i, mudará de valor constantemente, poderiam mim dizer também em cada linha qual o seu valor? fico grato desde já! Aquele que me ajudar terá +1 de reputação!!
argument0 = 3
argument1 = vk_up
argument2 = vk_down
argument3 = vk_left
argument4 = vk_right
//argumentos 1, 2, 3, 4 são utilizados para facilitar o usuário da engine modificar as teclas de movimentação do objeto.
//argumento 0 = speedvar i;//criando variável i
if (keyboard_check(argument1)) //verifica se vk_up está pressionado
for (i=argument0;i>=0;i-=1) //cria um loop para mover o objeto, ele primeiramente vai verificar se "y - 3" existe um objeto solido, se não existir o player se moverá "y -=3", caso exista, ele verificará "y - 2", caso não haja objeto solido o objeto se moverá "y -= 2" caso exista um objeto solido, ele verificará se existe um em "y - 1", se não existir o objeto se moverá "y -= 1"
if (place_free(x,y-i)) //vai verificar se existe um objeto solido em "y - i", ou seja "y - 3, y -2, y - 1"
y-=i; //caso na posição "y - i" não exista um objeto "solido" o objeto se moveria -1, -2 ou -3 pixel na vertical
else //se y - i houver um objeto solido.
{//aqui vai acontecer o seguinte, sabe quando o player está na "quina" de um objeto.. e se pressionado para cima ele da uma deslisada na diagonal..
if (place_free(x-i,y-i)) //verificará se na posição "x-i" e "y-i" não há um objeto solido, caso não haja, moverá o objeto para esquerda, tirando-o do raio de colisão com o objeto que está a sua frente(y-i).
x-=i/2; //deslocará o objeto para "x - 0,5" ou "x - 1" ou "x - 1,5", dependerá do valor de "i", i terá valores "0, 1, 2, 3"
if (place_free(x+i,y-i))//mesma coisa que o código acima, só que verificando as posição do lado direito.
x+=i/2;
}
if (keyboard_check(argument2))
for (i=argument0;i>=0;i-=1)
if (place_free(x,y+i))
y+=i;
else
{
if (place_free(x-i,y+i))
x-=i/2;
if (place_free(x+i,y+i))
x+=i/2;
}
if (keyboard_check(argument3))
for (i=argument0;i>=0;i-=1)
if (place_free(x-i,y))
x-=i;
else
{
if (place_free(x-i,y-i))
y-=i/2;
if (place_free(x-i,y+i))
y+=i/2;
}
if (keyboard_check(argument4))
for (i=argument0;i>=0;i-=1)
if (place_free(x+i,y))
x+=i;
else
{
if (place_free(x+i,y-i))
y-=i/2;
if (place_free(x+i,y+i))
Não sei se fui muito explicativo, mais acho que vai entender, caso não entenda alguma coisa me diga que tento explicar melhor..
Acho muito interessante você tentar compreender o código, a maioria dos usuários só copiam e colam mesmo não entendendo o funcionamento
Editado: Agora, prestando mais atenção vi que você falou "eu estava vendo uma engine de colisão perfeita em rampas", pelo que eu entendi esse código é para jogos rpg, vou testar esse código, caso não seja isso que falei dou outro edited..
Última edição por Klior em Ter 21 Jun 2011, 20:44, editado 4 vez(es)
Klior- Data de inscrição : 07/03/2010
Reputação : 13
Número de Mensagens : 426
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- C#
- Javascript
Re: [Resolvido]Me ajudem a entender esse código
Muito obrigado a você, por ter dado a formula, e muito obrigado ainda à o LCS que conversando pelo msn , conseguiu entender a sua explicação e mim explicou mais detalhado ainda ! Agradeço aos dois por terem a paciência de querer mim ajudar, graças a vocês dois, eu entendo muito bem o for !
Resolvido, não pedirei para ninguem trancar, se o Klior quiser postar mais alguma coisa !!! Pode postar !
Resolvido, não pedirei para ninguem trancar, se o Klior quiser postar mais alguma coisa !!! Pode postar !
Re: [Resolvido]Me ajudem a entender esse código
Como o klior disse, é um codigo de rpg:
Resumindo, o código primeiramente tenta mover na direção indicada. Se não conseguir(colisão com parede) ele vai tentar mover nas diagonais, no caso de paredes na diagonal(deslizando).
Resumindo, o código primeiramente tenta mover na direção indicada. Se não conseguir(colisão com parede) ele vai tentar mover nas diagonais, no caso de paredes na diagonal(deslizando).
Re: [Resolvido]Me ajudem a entender esse código
Desculpa não ter explicado corretamente antes, porque eu não tinha reparado que o loop era subtrativo, dei uma editada no meu post explicando de forma correta. Abraços
Klior- Data de inscrição : 07/03/2010
Reputação : 13
Número de Mensagens : 426
Prêmios :
x 0 x 1 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- C#
- Javascript
Re: [Resolvido]Me ajudem a entender esse código
Entendi perfeitamente agora, no caso é um movimento mais preciso do que usar place_metting, por que ele não sai dando pulinhos e é mais simples do que usar seno e cosseno.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|