Conectar-se
Quem está conectado
16 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 16 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Ranking : Nota B
Notas recebidas : B
Data de inscrição : 25/07/2010
Número de Mensagens : 630
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuáriohttp://clubmaker.forumeiros.com

[Resolvido]Me ajudem a entender esse código

em Ter 21 Jun 2011, 18:52
Reputação da mensagem: 0% (1 votos)
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))


Última edição por .:Allison:. em Ter 21 Jun 2011, 20:25, editado 1 vez(es)
avatar
Data de inscrição : 07/03/2010
Número de Mensagens : 426
Insígnias de JAM :

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

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

Re: [Resolvido]Me ajudem a entender esse código

em Ter 21 Jun 2011, 19:59
Reputação da mensagem: 100% (1 votos)
@.: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 = speed

var 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)
avatar
Ranking : Nota B
Notas recebidas : B
Data de inscrição : 25/07/2010
Número de Mensagens : 630
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuáriohttp://clubmaker.forumeiros.com

Re: [Resolvido]Me ajudem a entender esse código

em Ter 21 Jun 2011, 20:25
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 !
avatar
Ranking : Nota A
Notas recebidas : B-A-A
Data de inscrição : 13/01/2010
Número de Mensagens : 1087
Insígnias de JAM :

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

Prêmios
   : 2
   : 1
   : 0
Ver perfil do usuáriohttp://www.mathaeuz.deviantart.com

Re: [Resolvido]Me ajudem a entender esse código

em Ter 21 Jun 2011, 20:33
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).
avatar
Data de inscrição : 07/03/2010
Número de Mensagens : 426
Insígnias de JAM :

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

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

Re: [Resolvido]Me ajudem a entender esse código

em Ter 21 Jun 2011, 20:34
Reputação da mensagem: 100% (1 votos)
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
avatar
Ranking : Nota B
Notas recebidas : B
Data de inscrição : 25/07/2010
Número de Mensagens : 630
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuáriohttp://clubmaker.forumeiros.com

Re: [Resolvido]Me ajudem a entender esse código

em Ter 21 Jun 2011, 20:38
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.
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