Página 1 de 1

Ajuda com Engine

Enviado: Ter Nov 15, 2016 8:17 pm
por cledson252010
Gostaria que alguém me ajudasse com uma engine de movimentação de plataforma com as seguintes características:
O personagem se move normalmente e colide com objetos sólidos e com plataformas.
Se puderem ajudar estarei grato.

Re: Ajuda com Engine

Enviado: Ter Nov 15, 2016 9:27 pm
por Dust
Creio que não seja preciso uma engine para criar uma pequena engine como está.
O que você precisa mesmo é de um pouco de leitura, apenas leia e aprenda um pouco, pois isso é uma coisa muito simples.
viewtopic.php?f=9&t=144
http://gmbr.forumeiros.com/t18692-lista-de-tutoriais
http://gmbr.forumeiros.com/t29325-lista ... is-parte-2
http://gmbr.forumeiros.com/f22-escolha-da-staff
http://gmbr.forumeiros.com/f31-tutoriais-aprovados
Os links acima possuem uma grande variedade de tutoriais, recomendo que você leia os tutoriais de Alex FC em ordem, não leia com pressa, apenas estude

Re: Ajuda com Engine

Enviado: Qua Nov 16, 2016 9:35 am
por cledson252010
Colisões simples eu sei fazer, só estou com um probleminha chato com a minha. Eu não sabia da existência desses tutoriais. Vou lê-los e estudá-los. Vlw....

Edit:
Eu estou com dúvida num código que escrevi, onde o personagem salta e atravessa uma plataforma. O problema é que ele salta direto para posição de colisão e não sei resolver isso.
O código é esse:

Código: Selecionar todos

/// ----------------Movimentação Vertical---------------------------
jump = place_empty(x,y+1) || place_meeting(x,y,objNoSolid);

// Verifica se está suspenso no ar
switch(jump){

    case true:
        var Solid = !place_free(x,y+verticalSpeed);
        var obj = instance_place(x,y+abs(verticalSpeed),objNoSolid);
        var noSolid = place_meeting(x,y+abs(verticalSpeed),objNoSolid) && y < obj.y;
        
        // Verifica se há uma colisão
        switch(Solid ^^ noSolid){
            
            case true:
            //  Colisão sólida
                if(Solid){
                
                    var yTo = floor(abs(verticalSpeed));
                    while(!place_free(x,y+sign(verticalSpeed)*yTo)){
                        yTo -= 1;
                    }
                    y += sign(verticalSpeed)*yTo;
                    verticalSpeed = 0;
                }
            // Colisão não-sólida
                if(noSolid){
                
                    var yTo = floor(abs(verticalSpeed));
                    while(place_meeting(x,y+yTo,objNoSolid)){
                        yTo -= 1;
                    }
                    y += yTo;
                    verticalSpeed = 0;
                }  
            break;
            
            case false:
                verticalSpeed += .25;
                y += floor(verticalSpeed);
            break;
        }
    break;
    
    case false:
        verticalSpeed = 0;
        if(keyboard_check_pressed(ord('W'))) verticalSpeed = -6;y += verticalSpeed;
        if(keyboard_check_pressed(ord('S')) && place_meeting(x,y+1,objNoSolid)) verticalSpeed = 4; y += verticalSpeed;
    break;
}
Talvez haja algo que não estou reparando. Peço a ajuda de vocês do fórum.