el jugador no se queda encima de la plataforma, funciona bien con plataformas solidas
ya lo solucione me faltaba esto vspd>0 en el codigo de colisiones , ya funciona correctamente con ambos tipos de plataformas pero me surgio otra duda como hago para controlar velocidades de plataforma menores a 1 como 0.5;
PLATAFORMAS MOVILES :
EDITABLE SI ENCUENTRA BUGS AVISE :
https://drive.google.com/file/d/1zF4Se-PHWXp8nTsLLBUh6S3TYtZhxEFq/view?usp=sharing
[spoiler]
[gml]
//creditos para youtuber Art Games and Tech
//EVENT CREATE
platformType = 0;
initx = x;
inity = y;
hspd = 0;
vspd = 0;
radius = 60;
platDir = 1;
platAng = irandom(360);
//EVENT END STEP
switch(platformType){
//HORIZONTAL PLATFORM
case 0:
var platormSpeed = 0.5;
if(platAng mod(360)==0){
platAng =-platAng;
}
platAng += platormSpeed*platDir;
hspd = initx+lengthdir_x(radius,platAng)-x;
with(parPlayers){
if(!place_meeting(x,y,other) && place_meeting(x,y+1,other)){
if(!place_meeting(x+other.hspd,y,parSolid)){
x += other.hspd;
}
}
}
x += hspd;
break;
//VERTICAL PLATFORM
case 1:
var platormSpeed = 0.5;
if(platAng mod(360)==0){
platAng =-platAng;
}
platAng += platormSpeed*platDir;
vspd = ceil(inity+lengthdir_y(radius,platAng)-y);
with(parPlayers){
if(!place_meeting(x,y,other) && place_meeting(x,y+abs(other.vspd),other)){
if(!place_meeting(x,y+other.vspd,parSolid)){
y += other.vspd;
}
}
}
y += vspd;
break;
//CIRCULAR PLATFORM
case 2:
var platormSpeed = 0.5;
if(platAng mod(360)==0){
platAng =-platAng;
}
platAng += platormSpeed*platDir;
hspd = initx+lengthdir_x(radius,platAng)-x;
vspd = ceil(inity+lengthdir_y(radius,platAng)-y);
with(parPlayers){
if(!place_meeting(x,y,other) && place_meeting(x,y+1,other)){
if(!place_meeting(x+other.hspd,y,parSolid)){
x += other.hspd;
}
}
if(!place_meeting(x,y,other) && place_meeting(x,y+abs(other.vspd),other)){
if(!place_meeting(x,y+other.vspd,parSolid)){
y += other.vspd;
}
}
}
x += hspd;
y += vspd;
break;
}
[/gml]
[/spoiler]