[Resolvido] Mario aranha (Como arrumar)

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

[Resolvido] Mario aranha (Como arrumar)

Mensagem por Gabreel em Dom 04 Out 2009, 18:29


é isso que acontece quando fico de frente com a parede pulando..

Dos dois lados..

Depois de uns 5 segundos ele cai.
se eu pular novamente ele sobe cerca de 16 pixels ( o tamanho do bloco sólido)

Mario aranha mario aranha.. xD

como arruma?


Última edição por ·ßieL em Seg 05 Out 2009, 20:48, editado 1 vez(es)

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Resolvido] Mario aranha (Como arrumar)

Mensagem por CPinheiro em Dom 04 Out 2009, 18:30

Poste o código de seu movimento, ficará mais fácil de ajudar.
Btw, está usando máscaras de colisão?

CPinheiro

Número de Mensagens : 1015
Idade : 20
Data de inscrição : 01/06/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://supermariobrasileiro.blogspot.com

Voltar ao Topo Ir em baixo

Re: [Resolvido] Mario aranha (Como arrumar)

Mensagem por Gabreel em Dom 04 Out 2009, 18:37

Código:
//andar e correr :)
if ! (variable_local_exists("var_correndo")) {
var_correndo = 0;
}
if ! (variable_local_exists("var_acelera")) {
var_acelera = 0;
}
if ! (variable_local_exists("var_desacelera")) {
var_desacelera = 0;
}

if (keyboard_check(vk_right))
{
if (place_free(x+var_correndo,y))
{
if (var_acelera < 15) var_acelera += 0.5;
if (var_acelera > 5) && (var_correndo < 10) var_correndo+=0.1;
x += var_correndo;
}
}
if (keyboard_check_released(vk_right)) { var_desacelera = var_correndo; var_acelera = 0; var_correndo = 0; }

if (keyboard_check(vk_left))
{
if (place_free(x-var_correndo,y))
{
if (var_acelera > -15) var_acelera -= 0.5;
if (var_acelera < -5) && (var_correndo > -10) var_correndo-=0.1;
x += var_correndo;
}
}
if (keyboard_check_released(vk_left)) { var_desacelera = var_correndo; var_acelera = 0; var_correndo = 0; }

if (var_desacelera < 0)
{
var_desacelera+=0.1;
if (var_desacelera > 0) var_desacelera = 0;
x+=var_desacelera;
}

if (var_desacelera > 0)
{
var_desacelera-=0.1;
if (var_desacelera < 0) var_desacelera = 0;
x+=var_desacelera;
}
//Gravidade  :)
if place_free(x,y+2){gravity=0.6 gravity_direction=270}
else
gravity=0

if vspeed>15{vspeed=15}

//Pulo Problematico
if keyboard_check_pressed(vk_space) {
sound_play(snd_pular)
if not(place_free(x,y+2)){vspeed=-9}}
Código do Step...

Estou usando mascara..

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Resolvido] Mario aranha (Como arrumar)

Mensagem por CPinheiro em Seg 05 Out 2009, 17:52

Tente trocar o código do pulo e da gravidade:

Código:

//Gravidade  :)
if ! (variable_local_exists("var_nochao")) { var_nochao = true; }
if (place_free(x,y+1))
{
gravity = 0.6;
gravity_direction = 270;
var_nochao = false;
}
else
{
gravity = 0;
var_nochao = true;
}

if (vspeed>15) {vspeed = 15;}

if (keyboard_check_pressed(vk_space)) && (var_nochao == true)
{
sound_play(snd_pular)
vspeed=-9
}

Não se esqueça de determinar o origin da máscara e dos sprites do personagem sempre no meio ou nos pés dele Eu particularmente gosto de colocar sempre no meio.
Não se esqueça de matar a velocidade de queda/subida do personagem no evento de colisão com o bloco sólido:

Código:

move_contact_solid(direction,8);
vspeed = 0;

Qualquer dúvida, estou por aqui. (;

CPinheiro

Número de Mensagens : 1015
Idade : 20
Data de inscrição : 01/06/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://supermariobrasileiro.blogspot.com

Voltar ao Topo Ir em baixo

Re: [Resolvido] Mario aranha (Como arrumar)

Mensagem por Gabreel em Seg 05 Out 2009, 18:12

O Problema continua.. tentei trocar o codigo de movimento por um mais simples e acontece o mesmo, s]a unica coisa que eu acho q ficou diferente foi a distancia que se sobe ... que ficou menor Smile

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Resolvido] Mario aranha (Como arrumar)

Mensagem por Thyago em Seg 05 Out 2009, 18:27

Tente usar esse codigo,no lugar do que voce esta usando:

Código:
///////////////////////////Script de plataforma//////////////////////////////////////
if(keyboard_check_pressed(vk_up) and (place_free(x,y+1))=false)               
{vspeed=-8}                                                                    /////
else                                                                            /////
if(place_free(x,y+1))                                                          /////
{vspeed+=0.5}                                                                  /////
else                                                                            /////
{vspeed=0}                                                                      /////
/////////////////////////////////////////////////////////////////////////////////////
if(place_free(x,y))=false                                                      /////
{if(place_free(x+4,y-31))=false{                                                /////
hspeed=-2                                                                      /////
}if(place_free(x-4,y-31))=false{                                                /////
hspeed=2}                                                                      /////
y-=6}                                                                          /////
/////////////////////////////////////////////////////////////////////////////////////
if(keyboard_check(vk_right)and(hspeed<4)and(place_free(x+1,y)))                /////
{hspeed+=0.3}                                                                  /////
/////////////////////////////////////////////////////////////////////////////////////
if(keyboard_check(vk_left)and(hspeed>-4)and(place_free(x-1,y)))               
{hspeed-=0.3}                                                                  /////
/////////////////////////////////////////////////////////////////////////////////////
if keyboard_check(vk_right)=false and keyboard_check(vk_left)=false and hspeed<0.05//
{hspeed+=0.1}                                                                    ////
/////////////////////////////////////////////////////////////////////////////////////
if keyboard_check(vk_right)=false and keyboard_check(vk_left)=false and hspeed>0 ////
{hspeed-=0.1}

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: [Resolvido] Mario aranha (Como arrumar)

Mensagem por CPinheiro em Seg 05 Out 2009, 18:29

·ßieL escreveu:O Problema continua.. tentei trocar o codigo de movimento por um mais simples e acontece o mesmo, s]a unica coisa que eu acho q ficou diferente foi a distancia que se sobe ... que ficou menor Smile

Olha, sabe o código do movimento? Ele tinha uns bugzinhos bestas que não tinha notado antes. Se somarmos a correção desses bugs com aquilo que eu falei lá em cima, teremos o seguinte código:

Código:
//andar e correr :)
if ! (variable_local_exists("var_correndo")) {
var_correndo = 0;
}
if ! (variable_local_exists("var_acelera")) {
var_acelera = 0;
}
if ! (variable_local_exists("var_desacelera")) {
var_desacelera = 0;
}

if (keyboard_check(vk_right)) && (place_free(x+var_correndo,y))
{
if (var_acelera < 15) var_acelera += 0.5;
if (var_acelera > 5) && (var_correndo < 10) var_correndo+=0.1;
x += var_correndo;
}
if (keyboard_check_released(vk_right)) { var_desacelera = var_correndo; var_acelera = 0; var_correndo = 0; }

if (keyboard_check(vk_left)) && (place_free(x+var_correndo,y))
{
if (var_acelera > -15) var_acelera -= 0.5;
if (var_acelera < -5) && (var_correndo > -10) var_correndo-=0.1;
x += var_correndo;
}

if (keyboard_check_released(vk_left)) { var_desacelera = var_correndo; var_acelera = 0; var_correndo = 0; }

if (var_desacelera < 0)
{
var_desacelera+=0.1;
if (place_free(x+var_desacelera,y))
{
if (var_desacelera > 0) var_desacelera = 0;
x+=var_desacelera;
}
else
{
var_desacelera = 0;
}
}

if (var_desacelera > 0)
{
var_desacelera-=0.1;
if (place_free(x+var_desacelera,y))
{
if (var_desacelera < 0) var_desacelera = 0;
x+=var_desacelera;
}
else
{
var_desacelera = 0;
}
}
//Gravidade :)
if ! (variable_local_exists("var_nochao")) { var_nochao = true; }
if (place_free(x,y+1))
{
gravity = 0.6;
gravity_direction = 270;
var_nochao = false;
}
else
{
gravity = 0;
var_nochao = true;
}

if (vspeed>15) {vspeed = 15;}

if (keyboard_check_pressed(vk_space)) && (var_nochao == true)
{
vspeed=-9
}

Caso tenha problemas, montei uma mini-engine com esse mesmo código. Para evitar ter o trabalho de baixá-la, tente fazer tudo o que eu falei antes.

Acelera____o.gm6 - 0.01MB

Você tinha outra dúvida, relacionada a sprites, certo? Poste ela nesse tópico, ficará mais fácil do que acompanhar dois tópicos ao mesmo tempo.

CPinheiro

Número de Mensagens : 1015
Idade : 20
Data de inscrição : 01/06/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://supermariobrasileiro.blogspot.com

Voltar ao Topo Ir em baixo

Re: [Resolvido] Mario aranha (Como arrumar)

Mensagem por Gabreel em Seg 05 Out 2009, 18:33

Sim queria encaixar sprite de correr, andar, ficar parado e quem sabe derrapar...
(uso o GMPro), então to aberto a scripts diferentes xD

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Resolvido] Mario aranha (Como arrumar)

Mensagem por CPinheiro em Seg 05 Out 2009, 18:36

·ßieL escreveu:Sim queria encaixar sprite de correr, andar, ficar parado e quem sabe derrapar...
(uso o GMPro), então to aberto a scripts diferentes xD

Já vou editar esse post com o código funcionando com sprites, mas o código anterior funcionou?

Edit:
Perfeitamente adaptado para sprites. Lembre-se de mudar os nomes para os sprites de seu projeto, e de que eles estejam virados para a direita (nota: o código gira os sprites para esquerda e direita automaticamente).

Código:

//andar e correr :)
if ! (variable_local_exists("var_correndo")) {
var_correndo = 0;
}
if ! (variable_local_exists("var_acelera")) {
var_acelera = 0;
}
if ! (variable_local_exists("var_desacelera")) {
var_desacelera = 0;
}
if ! (variable_local_exists("var_direita")) { var_direita = true; }
if ! (variable_local_exists("var_parado")) { var_parado=true; }

if (keyboard_check(vk_right)) && (place_free(x+var_correndo,y))
{
if (var_acelera < 15) var_acelera += 0.5;
if (var_acelera > 5) && (var_correndo < 10) var_correndo+=0.1;
x += var_correndo;
var_direita = true;
var_parado = false;
if (image_speed < 0.5) { image_speed+=0.005; }
}
if (keyboard_check_released(vk_right)) { var_desacelera = var_correndo; var_acelera = 0; var_correndo = 0; }

if (keyboard_check(vk_left)) && (place_free(x+var_correndo,y))
{
if (var_acelera > -15) var_acelera -= 0.5;
if (var_acelera < -5) && (var_correndo > -10) var_correndo-=0.1;
x += var_correndo;
var_direita = false;
var_parado = false;
if (image_speed < 0.5) { image_speed+=0.005; }
}

if (keyboard_check_released(vk_left)) { var_desacelera = var_correndo; var_acelera = 0; var_correndo = 0; }

if (var_desacelera < 0)
{
var_desacelera+=0.1;
if (place_free(x+var_desacelera,y))
{
if (var_desacelera > 0) var_desacelera = 0;
x+=var_desacelera;
if (image_speed > 0) && ! (keyboard_check(vk_right))
image_speed -= 0.005;
}
else
{
var_desacelera = 0;
image_speed = 0;
}
}

if (var_desacelera > 0)
{
var_desacelera-=0.1;
if (place_free(x+var_desacelera,y))
{
if (var_desacelera < 0)  {var_desacelera = 0;}
x += var_desacelera;
if (image_speed > 0) && ! (keyboard_check(vk_left))
image_speed -= 0.005;
}
else
{
var_desacelera = 0;
image_speed = 0;
}
}
//Gravidade :)
if ! (variable_local_exists("var_nochao")) { var_nochao = true; }
if (place_free(x,y+1))
{
gravity = 0.6;
gravity_direction = 270;
var_nochao = false;
}
else
{
gravity = 0;
var_nochao = true;
}

if (vspeed>15) {vspeed = 15;}

if (keyboard_check_pressed(vk_space)) && (var_nochao == true)
{
vspeed=-9;
var_nochao = false;
}

if (image_speed>0.5) {image_speed=0.5}

if (var_nochao == false)
{
    if (var_direita == true)
    {
        sprite_index = spr_pulando;
        image_xscale = 1;
    }
    else
    {
        sprite_index = spr_pulando;
        image_xscale = -1;
    }
}
else
{
    if (var_parado == true)
    {
        if (var_direita == true)
        {
            sprite_index = spr_parado;
            image_xscale = 1;
        }
        else
        {
            sprite_index = spr_parado;
            image_xscale = -1;
        }
    }
    else
    {
        if (var_direita == true)
        {
            if (image_speed < 0.3)
            {
                sprite_index = spr_andando;
                image_xscale = 1;
            }
            else
            {
                sprite_index = spr_correndo;
                image_xscale = 1;
            }
        }
        else
        {
            if (image_speed < 0.3)
            {
                sprite_index = spr_andando;
                image_xscale = -1;
            }
            else
            {
                sprite_index = spr_correndo;
                image_xscale = -1;
            }
        }
    }
}

if (var_desacelera == 0) && (var_correndo == 0) && (var_acelera == 0)
{
    if ! (keyboard_check(vk_left)) && ! (keyboard_check(vk_right))
    {
        var_parado = true;
        image_speed = 0;
    }
}

if (image_speed < 0) { image_speed = 0; }

if (var_desacelera > 0) && (keyboard_check(vk_right))
{
    image_speed = 0;
}

if (var_desacelera < 0) && (keyboard_check(vk_left))
{
    image_speed = 0;
}

Caso tenha problemas, a engine:
Aceleração.gm6 - 0.01MB


Última edição por CPinheiro em Seg 05 Out 2009, 19:32, editado 1 vez(es)

CPinheiro

Número de Mensagens : 1015
Idade : 20
Data de inscrição : 01/06/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://supermariobrasileiro.blogspot.com

Voltar ao Topo Ir em baixo

Re: [Resolvido] Mario aranha (Como arrumar)

Mensagem por Gabreel em Seg 05 Out 2009, 18:38

Sim funcionou perfeito *-*

(As sprites tem movimento)

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [Resolvido] Mario aranha (Como arrumar)

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


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