quinta-feira, 3 de maio de 2012

Movimento em plataforma engine

Movimentação basica
colocar todo scripe em step

//GRAVIDADE
if place_free(x,y+2){gravity=1} //Se estiver livre de colisões 2 pixels abaixo, a gravidade será 1
else //senão
gravity=0 //a gravidade será 0
//MOVIMENTAÇÃO
//DIREITA
if keyboard_check(vk_right) //Se a tecla direita for pressionada
{if place_free(x+5,y){x+=5} //e se estiver livre de colisões 5 pixels a frente, andará 5 pixels para frente.
image_xscale=1} //e o sprite olhará para a direita
//ESQUERDA
if keyboard_check(vk_left) //Se a tecla esquerda for pressionada
{if place_free(x-5,y){x-=5} //e se estiver livre de colisões 5 pixels atras, voltará 5 pixels.
image_xscale=-1} //e o sprite olhará para a esquerda
//PULO
if keyboard_check_pressed(vk_up) //Se a tecla cima for pressionada
{if!place_free(x,y+2){vspeed=-12}} //e se não estiver livre de colisões 2 pixels abaixo, a velocidade vertical irá ser -12, ou seja, ele pulará.

Movimentação avançada
create
direita = true
pe_no_chao = false
andando = false
abaixado = false
atacando = false
subindo = false
sobe = false
image_speed = 0.15
step
script 1

gravidade(obj_player,0.75,pe_no_chao)
script 2
//movimentasao
if (keyboard_check(vk_right) and abaixado = false and atacando = false){//verifica se a seta direita foi apertada e não esta abaixado e não esta atacando
    hspeed = 5;direita = true;andando = true
}else{// se não foi
    if (keyboard_check(vk_left) and abaixado = false and atacando = false){ //verifica se a seta esquerda foi apertada e não esta abaixado e não esta atacando
        hspeed = -5;direita = false ;andando = true
    }else{// se não foi
         hspeed = 0;andando = false
    }
}
//abaixando
if keyboard_check(vk_down){//se for apertado para baixo
    abaixado = true
}else{//se não for
    abaixado = false
}
//atacando
if (keyboard_check_pressed(vk_space) and atacando = false and abaixado = false){// verifica se o espaço foi apertado e não se esta atacando e não esta abaixado
    image_index = 0
    atacando = true
    alarm[0] = 20
}
//pulando
if keyboard_check_pressed(vk_up) and pe_no_chao = true and abaixado = false{//se for apertado para cima
    vspeed = -9
    pe_no_chao = false
}
if keyboard_check_released(vk_up) and vspeed <= 0{//se for apertado para cima
    vspeed /= 2
}

if direita = true {//se para direita
    if pe_no_chao = false{//se estiver pulando
        if vspeed <= 0{//se estiver subindo
            sprite_index = spr_dir_pul_sub
        }else{//se estiver caindo
            sprite_index = spr_dir_pul_cai
        }
    }else{//se nao estiver pulando
        if abaixado = true{//se estiver baixo
            sprite_index = spr_dir_aba
        }else{//se não estiver para baixo
            if atacando = true{//se estiver atacando
                sprite_index = spr_dir_ata
            }else{//se não estiver atacando
                if andando = true{//se estiver andando
                    sprite_index = spr_dir_and
                }else{//se não estiver andando
                    sprite_index = spr_dir_par
                }
            }
        }
    }
}else{//se não estiver para direta (para esquerda)
    if pe_no_chao = false{//se estiver pulando
        if vspeed <= 0{//se estiver subindo
            sprite_index = spr_esq_pul_sub
        }else{//se estiver caindo
            sprite_index = spr_esq_pul_cai
        }
    }else{//se nao estiver pulando
        if abaixado = true{//se estiver baixo
            sprite_index = spr_esq_aba
        }else{//se não estiver para baixo
            if atacando = true{//se estiver atacando
                sprite_index = spr_esq_ata
            }else{//se não tiver atacando
                if andando = true{//se estiver andando
                    sprite_index = spr_esq_and
                }else{//se não estiver andando
                    sprite_index = spr_esq_par
                }
            }
        }
    }
}

E crie um script de gravidade
//DEFINIÇÕES DE GRAVIDADE
//#############################
if place_free(argument0.x,argument0.y)
    {
    argument0.argument2 = false
    argument0.gravity = argument1
    }
else
    {
    argument0.argument2 = true
    argument0.gravity = 0
    }
if (argument0.vspeed > 10) {argument0.vspeed = 10}
//############################# 

Nenhum comentário:

Postar um comentário