Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

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

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
samukamuka12
Novato
Novato
Reações: 0
Mensagens: 7

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

Mensagem por samukamuka12 » Qui Jun 30, 2016 6:57 pm

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:

Avatar do usuário
Adilson
Membro
Membro
Reações: 0
Mensagens: 114
Localização: Curitiba Parana

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

Mensagem por Adilson » Qui Jun 30, 2016 7:27 pm

n da pra saber oq pode ser....
mas se vc me mandar seu projeto eu descubro oq pode ser
Vlw, Flw !!

Avatar do usuário
nicoca
Membro
Membro
Reações: 0
Mensagens: 107

Contato:

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

Mensagem por nicoca » Qui Jun 30, 2016 7:28 pm

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

Avatar do usuário
Led
Membro
Membro
Reações: 0
Mensagens: 51

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

Mensagem por Led » Qui Jun 30, 2016 7:49 pm

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.

Avatar do usuário
samukamuka12
Novato
Novato
Reações: 0
Mensagens: 7

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

Mensagem por samukamuka12 » Qui Jun 30, 2016 8:02 pm

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.!

Avatar do usuário
nicoca
Membro
Membro
Reações: 0
Mensagens: 107

Contato:

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

Mensagem por nicoca » Qui Jun 30, 2016 8:50 pm

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

Avatar do usuário
samukamuka12
Novato
Novato
Reações: 0
Mensagens: 7

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

Mensagem por samukamuka12 » Sex Jul 01, 2016 7:59 am

Mais uma coisa onde boto esse mask_índex, é no create?

Avatar do usuário
nicoca
Membro
Membro
Reações: 0
Mensagens: 107

Contato:

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

Mensagem por nicoca » Sex Jul 01, 2016 11:18 am

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

Avatar do usuário
samukamuka12
Novato
Novato
Reações: 0
Mensagens: 7

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

Mensagem por samukamuka12 » Dom Jul 03, 2016 6:10 pm

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

Avatar do usuário
samukamuka12
Novato
Novato
Reações: 0
Mensagens: 7

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

Mensagem por samukamuka12 » Seg Jul 04, 2016 3:25 pm

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!

Trancado

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes