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

Nenhum

Ver toda a lista


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

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://luizgm.blogspot.com/

Rampas, um paradoxo

em Dom 01 Jan 2012, 14:16
Opa pessoal, estava aqui sem nada pra fazer e daí tive uma ideia que pode revolucionar os jogos de plataforma da GMBR(Caraca luiz, ainda nessa? É que eu to ajudando um povin com GM e me veio na cabeça que posso criar uma super engine de plataforma).
Chega de conversa, o negócio é o seguinte:
Vendo uma engine de Sonic(A revival), vi que para se movimentar usavam o seguinte código:
Código:
x+cos(angulo)
Y-sin(angulo)
É um jeito muito bom de se movimentar em rampas. Daí eu pensei, e se eu colocasse gravidade???
Pensei em usar o gravity_direction para fazer a gravidade sempre seguir o angulo em que a rampa faz o player andar. Preciso de ajuda, será que um simples lengthdir presta ou terei de fazer um código extenso igual na revival?

E mais, pense comigo. Se em um jogo de plataforma normal usamos:
Código:
if place_free(x,y + 1)
{
gravity = 1
}
else
{
gravity = 0
}
Como fazer para ir sempre verificando o que tem abaixo do player com o angulo alterado?
Creio que terei de ler o tuto do saim sobre lengthdir.
Aguardo repostas...
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: Rampas, um paradoxo

em Dom 01 Jan 2012, 15:03
Para fazer isso, basta usar as funções trigonométricas.
Mas se a gravidade for de acordo com o ângulo, ele ficará parado no teto.
Mesmo assim, vou mostrar de uma forma mais simples:
Código:
x+=lengthdir_x(gravidade, direction);
y+=lengthdir_y(gravidade, direction);
avatar
Ranking : Nota C
Notas recebidas : D-B-C
Data de inscrição : 08/09/2010
Número de Mensagens : 914
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://luizgm.blogspot.com/

Re: Rampas, um paradoxo

em Dom 01 Jan 2012, 15:32
Beleza, assim fica melhor. Mas como relacionar a direção com o angulo da rampa?

Eu fiz assim, no create de um parent das rampas:
ang=radtodeg(arctan(sprite_width/sprite_heigth));
E na colisão do player com a rampa:
ang=other.ang

Mas o player ainda afunda(sem gravidade) quando colido com rampas de inclinações diferentes
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: Rampas, um paradoxo

em Dom 01 Jan 2012, 19:07
ang=radtodeg(arctan(sprite_width/sprite_heigth));

O tangente é o ângulo oposto pelo adjacente. Sendo assim, seria sprite_height/sprite_width.
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