Página 1 de 1

Bug de Colisão com jogo tipo TopDown!!! Urgente

Enviado: Qui Jun 30, 2016 6:57 pm
por samukamuka12
Pessoal sou novo no forum, mas tenho uma duvida com o programa game maker studio.
Estou fazendo um jogo TopDown, logo coloco umas paredes pro personagem não passa a room e cair "infinitamente", e ai que vem o problema!
eu coloco um evento de colisão no personagem com o bloco mas ele ultrapassa ele do mesmo jeito, e sim coloquei o bloco como sólido, tbm coloquei no evento de colisão um script de speed e o alor dele era 0 msm assim ele ultrapassa, ja faz mais de um mês que eu não consigo,sim mais de um mes que eu não consigo fazer essa colisão, eu até vi no forum antigo e não achei, por isso é urgente!!!! :pc:

Re: Bug de Colisão com jogo tipo TopDown!!! Urgente

Enviado: Qui Jun 30, 2016 7:27 pm
por Adilson
n da pra saber oq pode ser....
mas se vc me mandar seu projeto eu descubro oq pode ser

Re: Bug de Colisão com jogo tipo TopDown!!! Urgente

Enviado: Qui Jun 30, 2016 7:28 pm
por nicoca
olha eu n sei resolver seu problema mas posso te dar uma movimentação diferente
no create vc coloca :

Código: Selecionar todos

xvel = 0; //Velocidade Horizontal
yvel = 0; //Velocidade Vertical
e no step:

Código: Selecionar todos

var left = keyboard_check(ord("A")); //Se está apertando a tecla esquerda;
var right = keyboard_check(ord("D")); //Se está apertando a tecla direita;
var up = keyboard_check(ord("W")); //Se apertou a tecla cima;
var down = keyboard_check(ord("S")); //Se apertou a tecla cima;

    if left //Se apertar esquerda
    {
        xvel = -2;
    }
    else if right //Se apertar direita
    {
        xvel = 2;
    }
    else{xvel = 0;}
    
    if up
    {
        yvel = -2;
    }

    else if down 
    {
        yvel = 2;
    }
    else //Se não apertar nada
    {
     yvel = 0;
    }
//Colisão Horizontal

repeat(abs(xvel)) //Repete o código o numero de vezes igual a velocidade horizontal;
{
    if place_free(x+sign(xvel),y) //Se tiver espaço livre a x-1 ou x+1;
    {
        x += sign(xvel); //anda 1 pixel pra esquerda ou direita;
    }
}
//Colisão Vertical

repeat(abs(yvel)) //Repete o código o numero de vezes igual a velocidade vertical;
{
    if place_free(x,y+sign(yvel)) //Se tiver espaço livre a y-1 ou y+1;
    {
        y += sign(yvel); //anda 1 pixel pra cima ou baixo;
    }
    else //Se não tiver espaço livre acima ou abaixo;
    {
        yvel = 0; //Velocidade vertical = 0;
    }
}
pra colidir com outro objeto bata marca ele como solid presisa  nem colocar colisão

Re: Bug de Colisão com jogo tipo TopDown!!! Urgente

Enviado: Qui Jun 30, 2016 7:49 pm
por Led
Você quer que o objeto não passe dos limites da room, certo?

Código: Selecionar todos

x = clamp(x,0,room_width); //Impede que x seja menor que 0 e maior que room_width;
y = clamp(y,0,room_height); //Impede que y seja menor que 0 e maior que room_height;
A função clamp(val,min,max) retorna a variável desejada dentro dos valores mínimo e máximo que você estipular.

Re: Bug de Colisão com jogo tipo TopDown!!! Urgente

Enviado: Qui Jun 30, 2016 8:02 pm
por samukamuka12
Com posso enviar o meu projeto Adilson?
Led, gostei do codigo e pode ser bem util, porém, eu quero que tipo, como posso explicar.

Assim eu tenho arvores espalhada pela room, e eu quero colocar um bloco invisível na room não só no troco das arvores mas tbm em volta da room toda, assim da uma impressão que algo esta bloqueando ele , mas eu poderia colocar o seu código, sim eu poderia,mas eu preciso colocar colisão num bloco pq assim eu coloco nos troncos da arvore assim eu não passo no tronco e sim nas folhas dele tbm preciso dele caso eu colocar pedras na room.
Sei que vcs não entenderam muito mas existi ferramentas para criar jogos de RPG e la existi um bloco invisível que a função dele é bloquear o player.
Tomara que entederam.!

Re: Bug de Colisão com jogo tipo TopDown!!! Urgente

Enviado: Qui Jun 30, 2016 8:50 pm
por nicoca
entedi o que vc quer chegar vc pode usar mask_index faça um sprite do tamanho  que vc quer que colida bota um nome nele ecoloca ele mask_index= nome do sprite

Re: Bug de Colisão com jogo tipo TopDown!!! Urgente

Enviado: Sex Jul 01, 2016 7:59 am
por samukamuka12
Mais uma coisa onde boto esse mask_índex, é no create?

Re: Bug de Colisão com jogo tipo TopDown!!! Urgente

Enviado: Sex Jul 01, 2016 11:18 am
por nicoca
se vc quer mudar o mask_indexde certo obejto durante um certo tempo e no step mas se vc que que aquele mask_index seja pra um so objeto eternamente coloca no create

Re: Bug de Colisão com jogo tipo TopDown!!! Urgente

Enviado: Dom Jul 03, 2016 6:10 pm
por samukamuka12
nicoca, eu fiz tudo que esta nesse tópico, mas nunca da eu vo colocar o link do meu projeto aki, tomara que funcione, ah só avisando o meu gm é studio blz!

http://www.mediafire.com/download/6nnpn ... roject.gmx

Re: Bug de Colisão com jogo tipo TopDown!!! Urgente

Enviado: Seg Jul 04, 2016 3:25 pm
por samukamuka12
pessoal eu descobri!!!
era muito facil, olha o codigo que eu vi num video de gm:
key_direita = keyboard_check(ord("D"));
key_esquerda = keyboard_check(ord("A"));
key_baixo = keyboard_check(ord("S"));
key_cima = keyboard_check(ord("W"));

if (key_direita && !place_meeting(x+3,y,obj_piso_invisivel)) {
    x += 3;
    sprite_index = spr_direita_andando;
    image_speed = 0.3;
}
if (key_esquerda && !place_meeting(x-3,y,obj_piso_invisivel)) {
    x -= 3;
    sprite_index = spr_esquerdo_andando;
    image_speed = 0.3;
}
if (key_cima && !place_meeting(x,y-3,obj_piso_invisivel)) {
    y -= 3;
    sprite_index = spr_tras_andando;
    image_speed = 0.3;
}
if (key_baixo && !place_meeting(x,y+3,obj_piso_invisivel)) {
    y += 3;
    sprite_index = spr_frente_andando;
    image_speed = 0.3;
}
era só isso, valeu pessoal pode fecha esse tópico.
falou!