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. |
Me ajudem na colisão.
Me ajudem na colisão.
Create
col = spd + 2;
spd = 5
//
Step
if(keyboard_check(vk_up)){y-=spd}
if(keyboard_check(vk_down)){y+=spd}
if(keyboard_check(vk_right)){x+=spd}
if(keyboard_check(vk_left)){x-=spd}
//
Parede(Collision)
if(place_free(x,y))
// //
Quero que tenha uma parede para o Player não sair da tela. Tentei vários códigos, nenhum deu certo.
col = spd + 2;
spd = 5
//
Step
if(keyboard_check(vk_up)){y-=spd}
if(keyboard_check(vk_down)){y+=spd}
if(keyboard_check(vk_right)){x+=spd}
if(keyboard_check(vk_left)){x-=spd}
//
Parede(Collision)
if(place_free(x,y))
// //
Quero que tenha uma parede para o Player não sair da tela. Tentei vários códigos, nenhum deu certo.
- Chuaschinai
- Colaborador
- Reações: 6
- Mensagens: 198
-
Re: Me ajudem na colisão.
Tente assim, com place_meeting que checa se há um determinado objeto, diferente de place_free, que checa se há um objeto sólido:
Create
Step
Bom basicamente este código, faz com que seu player colida com um objeto chamado obj_solid, ele usa o place_meeting para saber se há algum objeto chamado obj_solid para poder colidir com base na sua velocidade atual. O código não é complexo mas é muito útil para fazer movimentações básicas.
Existe também esse tutorial presente aqui mesmo no forum: PGM #MOVE 01 - Introdução: Movimento Top-Down, que utiliza o place_free, ao invés do place_meeting.
Create
Código: Selecionar todos
spd = 5; // a velocidade que você deseja que seu player ande, não exagere
hspd = 0; // hspd representa a velocidade horizontal
vspd = 0; // vspd representa a velocidade vertical
colisao = obj_solid; // Aqui você altera o objeto que quer colidir
Código: Selecionar todos
var hor = keyboard_check(ord("D")) - keyboard_check(ord("A"));
var ver = keyboard_check(ord("S")) - keyboard_check(ord("W"));
hspd = hor * spd;
vspd = ver * spd;
// Checa se há um obj_solid no eixo X
if(place_meeting(x+hspd, y, colisao)){
// Se houver ele entra em um loop para fazer a colisão ficar precisa (pixel por pixel)
while(!place_meeting(x+sign(hspd), y, colisao)) x += sign(hspd);
hspd = 0; // E quando colidir deixa a velocidade igual a 0
}
x += hspd; // Adiciona sua velocidade horizontal ao X do objeto
// Faz a mesma coisa que o código a cima porém usa o eixo Y
if(place_meeting(x, y+vspd, colisao)){
while(!place_meeting(x, y+sign(vspd), colisao)) y += sign(vspd);
vspd = 0;
}
y += vspd;
Existe também esse tutorial presente aqui mesmo no forum: PGM #MOVE 01 - Introdução: Movimento Top-Down, que utiliza o place_free, ao invés do place_meeting.
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante