Colisão
em Dom 29 Jun 2014, 16:55
Pessoal eu estou fazendo um jogo de plataforma.E estou tendo um problema quanto a colisão com a room.
EXPLICANDO MELHOR : É o seguinte, eu quero que quando o "obj_jogador", chegar ao extremo do lado direito e esquerdo da room ele pare.
ALGUÉM PODE ME AJUDAR? OBRIGADO A TODOS!!!
EXPLICANDO MELHOR : É o seguinte, eu quero que quando o "obj_jogador", chegar ao extremo do lado direito e esquerdo da room ele pare.
ALGUÉM PODE ME AJUDAR? OBRIGADO A TODOS!!!

- Data de inscrição : 21/04/2014
Número de Mensagens : 124
Insígnias de JAM :x 0
x 0
x 0
Reputação : 24
Prêmios: 0
: 0
: 0
Re: Colisão
em Dom 29 Jun 2014, 19:33
Vou te explicar a lógica e depois por o código
Se sua duvida for para movimento horizontal apenas, o melhor método que já vi (minha opinião) é;
para direita:
IF tecla direita E posição "x" do heroi É MENOR OU IGUAL largura da room MENOS margem = anda
para esquerda:
IF tecla esquerda E posição "x" do heroi É MAIOR QUE largura do sprite do heroi MENOS margem = anda
Em código seria
dessa maneira sempre que ele chegar numa determinada distancia da margem da tela ele para de se mover sem precisar fazer colisão com as laterais, você ainda pode definir a margem como quiser.
PS.: funciona com views também desde que a view esteja seguindo o player.
PS2.: Se você estiver usando qualquer tipo de "speed" no comando de movimento, você precisa criar um ELSE zerando o speed depois dos códigos. Esse código é ideal pra usar com "jump to" ( x += distancia em pixels).
Se sua duvida for para movimento horizontal apenas, o melhor método que já vi (minha opinião) é;
para direita:
IF tecla direita E posição "x" do heroi É MENOR OU IGUAL largura da room MENOS margem = anda
para esquerda:
IF tecla esquerda E posição "x" do heroi É MAIOR QUE largura do sprite do heroi MENOS margem = anda
Em código seria
- Código:
if (keyboard_check(vk_right) && ( x <= room_width - 200))
(comando de movimento);
if (keyboard_check(vk_left) && ( x > sprite_width - 330))
(comando de movimento);
// SE você estiver usando hspeed para fazer o movimento adicione esse comando abaixo;
if keyboard_check_released(vk_left) || keyboard_check_released(vk_right)
{
hspeed = 0
}
dessa maneira sempre que ele chegar numa determinada distancia da margem da tela ele para de se mover sem precisar fazer colisão com as laterais, você ainda pode definir a margem como quiser.
PS.: funciona com views também desde que a view esteja seguindo o player.
PS2.: Se você estiver usando qualquer tipo de "speed" no comando de movimento, você precisa criar um ELSE zerando o speed depois dos códigos. Esse código é ideal pra usar com "jump to" ( x += distancia em pixels).
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum