Página 1 de 1

duvida com plataformas

Enviado: Ter Dez 18, 2018 1:10 am
por 186557
Novamente tenho mais uma duvida. Eu tentei fazer uma plataforma que se move na horizontal e quando
colide em um objeto especifico (chao ou parede por exemplo) ela se move na direção oposta.

Minha duvida é que o player sobe na plataforma mas continua na mesma posição sem ser levado pela plataforma. Pelo oque
eu pesquisei esse é um erro bem comum nas plataformas mas não consegui encontrar um codigo que funcionasse.

Create da plataforma:

dir = -1;
movespeed = 3;
hsp = 0;

Step:

hsp = dir * movespeed

if (place_meeting(x+hsp,y,obj_terra))
{
while(!place_meeting(x+sign(hsp),y,obj_terra))
{
x += sign(hsp);
}
hsp = 0;

dir *= -1;
}
x += hsp;

Alguem conheçe algum codigo que possa funcionar?

Re: duvida com plataformas

Enviado: Ter Dez 18, 2018 10:50 am
por None
Na teoria você só precisa checar se a plataforma está colidindo com o player
Se sim, então você da para o player a velocidade horizontal da plataforma.

Re: duvida com plataformas

Enviado: Qua Dez 19, 2018 1:09 am
por 186557
Ok, vou testar isso.
Hoje eu resolvi criar outra plataforma com outro codigo, mas (como sempre) houve um problema.
Na teoria a plataforma se movimenta para um lado e quando o alarme é acionado a plataforma se move na direção oposta, o problema é que a plataforma começa a se mover em uma direção, quando o alarme é acionado ela se move na direção contraria, mas ao inves do alarme ser acionado de novo para a plataforma trocar a direção ela continua se movendo na mesma direção, como eu faço para o alarme ser acionado sempre e não só uma vez?

create da plataforma:
reserve_direction = 1;
hspeed = 2;

alarm 0:
hspeed = -hspeed;
reverse_direction = 1;

step:
if reserve_direction = 1 {
alarm[0]=60;
reserve_direction = 0;
}

Tem algum erro nos codigos?

Re: duvida com plataformas

Enviado: Qua Dez 19, 2018 9:05 am
por None
Parece que você quer que a cada 60 steps ele mude de direção, certo?
Então coloca o alarm[0] = 60 dentro do create event e no final do evento do alarme.
O step event no seu caso é desnecessário

Re: duvida com plataformas

Enviado: Qua Dez 19, 2018 10:25 pm
por 186557
Ok, esta tudo funcionando. Mas e se eu criar uma segunda plataforma como eu faço para o codigo de colisão do player com a plataforma1 funcionar para a plataforma2 tambem?

Codigo de colisão do player com a plataforma1:

if position_meeting(x-sprite_xoffset+sprite_width/2,y-sprite_yoffset+sprite_height,obj_plataforma){
objID=instance_position(x-sprite_xoffset+sprite_width/2,y-sprite_yoffset+sprite_height,obj_plataforma)
hspeed = objID.hspeed;
}else{
hspeed:=0;
}

Re: duvida com plataformas

Enviado: Qua Dez 19, 2018 11:27 pm
por None
Você cria um terceiro objeto e faz com que ele seja o parent de ambas as plataformas, então com o player você checa a colisão com o objeto pai.