Duvida sobre identificação e interação entre posição Y do player e do objeto. GML
Enviado: Seg Dez 12, 2022 10:11 am
Olá eu sou novato no uso de gamemaker e ando estudando bastante ele, porém vejo que sempre tenho as mesmas dificuldades nas coisas basicas como, identificar quando o jogador está abaixo ou acima de 1 objeto. Poderia facilmente usar o "Obj.y", mas não fica "clean" o suficiente... Por exemplo, eu estou trabalhando em um jogo que é basicamente um "ice climbers" feito por mim, não tenho intenção nenhuma de lucrar com ele, é mais um jogo para estudo, etc. A minha dificuldade está no momento em que o player quebra os blocos. No ice Climbers, quando você quebra 1 bloco, a velocidade em Y do jogador é zerada e então a gravidade o puxa para baixo. Além de que você não consegue quebrar mais de 1 bloco (tanto horizontalmente quanto verticalmente), porém eu tentei fazer essas coisas e não funciona. Por eu ser novato, eu não sei bem quais são as melhores opções para se usar na hora de fazer esse tipo de checagem e nem algumas "tecnicas" que eu poderia usar para melhorar o codigo ou melhorar a funcionalidade no geral. Por exemplo, eu fiz 1 Obj_Follower que serve para seguir o player para que 1 bloco so seja destruido se ele tiver em contato tanto com o Objfollower e o player e coloquei para ele se mover em snap, mas mesmo assim isso não da certo, ele ainda continua destruindo 2 blocos horizontalmente, além de que ele ultrapassa os blocos de baixo, também destruindo os de cima. Será que alguem poderia me ajudar?
vou deixar alguns codigos abaixo. O primeiro é o codigo para destruição dos blocos.
if place_meeting(x,y+1, Obj_Player) and place_meeting(x,y+1, Obj_Follower)
{
if (Obj_Player.state = PlayerState.JUMP)
{
//instance_create_layer(x -8, y -8, "Instances", Obj_BlocoQuebrado);
if (distance_to_object(Obj_Player) <= 0)
{
instance_destroy();
}
}
}
E esse debaixo é o script do pulo do player.
if place_meeting(x, y, Obj_ColBlock)
{
if (Obj_Follower.y <= Obj_ColBlock.y)
{
while(!place_meeting(x, y + sign(vspd), Obj_ColBlock))
{
y = y+ sign(vspd);
}
vspd = 0;
sprite_index = Iddle;
}
else
{
vspd = +15;
}
}
y = y + vspd/(aumentaSlow + ;
Se tiver algo muito errado, etc, ficaria feliz que vocês pudessem me dizer!
vou deixar alguns codigos abaixo. O primeiro é o codigo para destruição dos blocos.
if place_meeting(x,y+1, Obj_Player) and place_meeting(x,y+1, Obj_Follower)
{
if (Obj_Player.state = PlayerState.JUMP)
{
//instance_create_layer(x -8, y -8, "Instances", Obj_BlocoQuebrado);
if (distance_to_object(Obj_Player) <= 0)
{
instance_destroy();
}
}
}
E esse debaixo é o script do pulo do player.
if place_meeting(x, y, Obj_ColBlock)
{
if (Obj_Follower.y <= Obj_ColBlock.y)
{
while(!place_meeting(x, y + sign(vspd), Obj_ColBlock))
{
y = y+ sign(vspd);
}
vspd = 0;
sprite_index = Iddle;
}
else
{
vspd = +15;
}
}
y = y + vspd/(aumentaSlow + ;
Se tiver algo muito errado, etc, ficaria feliz que vocês pudessem me dizer!