Creat
Step
Por motivos de praticidade eu vou tentar usar os códigos do game maker para fazer a mesma coisa que o meu faz e tentar usar os seus anteriores e se ou quando eu conseguir eu irei dizer aqui, mas caso você ainda tenha como me ajudar eu agradeceria muito mesmo se você me guiasse, mas enquanto isso vou tentar do outro jeito.
Não sei o que tentou fazer aqui. Mas oDenominalmov é seu objeto, não um método/função (Que usam parâmetros). Coloque place_meeting como no código que te passei.
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. |
Como mudar a direção de um objeto ao bater em outro objeto parado? Tópico resolvido
- Tord_Pequeno
- Novato
- Reações: 1
- Mensagens: 4
Como mudar a direção de um objeto ao bater em outro objeto parado?
Olá, sou novo em gamemaker e principalmente em programação e gostaria de tirar uma dúvida que eu não consigo encontrar em lugar nenhum a resposta. Como eu faço para um objeto em movimento bater em um objeto parado e ao invés de atravessar o objeto parado o objeto em movimento ricocheteia/rebate e muda seu caminho? por favor imploro por ajuda.
Eu sou muito novo (em programação especificamente)
Re: Como mudar a direção de um objeto ao bater em outro objeto parado?
Depende muito do que você está usando pra fazer o movimento.
Tu pode marcar esse objeto parado como solid. E acrescentar isso na colisão do objeto em movimento com ele:
Agora, se for apenas uma simples inversão de velocidade:
Tu pode marcar esse objeto parado como solid. E acrescentar isso na colisão do objeto em movimento com ele:
Código: Selecionar todos
move_bounce_solid(true);
Código: Selecionar todos
speed = -speed;
- Tord_Pequeno
- Novato
- Reações: 1
- Mensagens: 4
Re: Como mudar a direção de um objeto ao bater em outro objeto parado?
Eu tentei com os dois códigos que você deu mas o resultado deles foi sempre tocar no objeto e ficar grudado nele, o código que eu estou usando para fazer a movimentação do objeto é:All-x escreveu: ↑Sex Fev 03, 2023 10:07 am Depende muito do que você está usando pra fazer o movimento.
Tu pode marcar esse objeto parado como solid. E acrescentar isso na colisão do objeto em movimento com ele:
Agora, se for apenas uma simples inversão de velocidade:Código: Selecionar todos
move_bounce_solid(true);
Código: Selecionar todos
speed = -speed;
Creat
Código: Selecionar todos
hsp=random_range(-2,2)
vsp=random_range(-2,2)
Código: Selecionar todos
x+=hsp
y+=vsp
if x<0 {hsp=-hsp}
if x>room_width {hsp=-hsp}
if y<0 {vsp=-vsp}
if y>room_height {vsp=-vsp}
Eu sou muito novo (em programação especificamente)
Re: Como mudar a direção de um objeto ao bater em outro objeto parado? Tópico resolvido
Você está utilizando um sistema próprio de movimento, aplicando as velocidades diretamente em x e y. Logo, os códigos que te passei não servem. Só serviriam se estivesse utilizando o sistema de movimento interno do GM (speed, hspeed, vspeed, direction, gravity e etc).
Enfim, fiz aqui um código que faz a reversão, assim como tu está fazendo pra ele rebater ao sair da room.
Coloca antes desse código que colocou no step.
Não testei, mas deve funcionar.
Enfim, fiz aqui um código que faz a reversão, assim como tu está fazendo pra ele rebater ao sair da room.
Coloca antes desse código que colocou no step.
Código: Selecionar todos
// Calcula direção atual
direcao = point_direction(x, y, x + hsp, y + vsp);
// Caso colida com o objeto 'obj_obstaculo' reverte a direção
if place_meeting(x + hsp, y + vsp, obj_obstaculo) {
nova_direcao = direcao + 180;
velocidade = point_distance(0, 0, hsp, vsp);
hsp = lengthdir_x(velocidade, nova_direcao);
vsp = lengthdir_y(velocidade, nova_direcao);
}
- Tord_Pequeno
- Novato
- Reações: 1
- Mensagens: 4
Re: Como mudar a direção de um objeto ao bater em outro objeto parado?
Eu tentei usar o código mas ele dava o seguinte erro:All-x escreveu: ↑Sex Fev 03, 2023 6:24 pm Você está utilizando um sistema próprio de movimento, aplicando as velocidades diretamente em x e y. Logo, os códigos que te passei não servem. Só serviriam se estivesse utilizando o sistema de movimento interno do GM (speed, hspeed, vspeed, direction, gravity e etc).
Enfim, fiz aqui um código que faz a reversão, assim como tu está fazendo pra ele rebater ao sair da room.
Coloca antes desse código que colocou no step.
Não testei, mas deve funcionar.Código: Selecionar todos
// Calcula direção atual direcao = point_direction(x, y, x + hsp, y + vsp); // Caso colida com o objeto 'obj_obstaculo' reverte a direção if place_meeting(x + hsp, y + vsp, obj_obstaculo) { nova_direcao = direcao + 180; velocidade = point_distance(0, 0, hsp, vsp); hsp = lengthdir_x(velocidade, nova_direcao); vsp = lengthdir_y(velocidade, nova_direcao); }
Código: Selecionar todos
___________________________________________
############################################################################################
ERROR in
action number 1
of Step Event0
for object oDenominalmov:
Variable <unknown_object>.oDenominalmov(100007, -2147483648) not set before reading it.
at gml_Object_oDenominalmov_Step_0 (line 7) - if oDenominalmov(x + hsp, y + vsp, oBlocomal) {
############################################################################################
gml_Object_oDenominalmov_Step_0 (line 7)
Eu sou muito novo (em programação especificamente)
Re: Como mudar a direção de um objeto ao bater em outro objeto parado?
Não sei o que tentou fazer aqui. Mas oDenominalmov é seu objeto, não um método/função (Que usam parâmetros). Coloque place_meeting como no código que te passei.
Respondo dúvidas aqui quando me sobra um tempo. Enfim, sugiro que comece estudar a fundo sobre GML.(...) as caso você ainda tenha como me ajudar eu agradeceria muito mesmo se você me guiasse, mas enquanto isso vou tentar do outro jeito.
- Tord_Pequeno
- Novato
- Reações: 1
- Mensagens: 4
Re: Como mudar a direção de um objeto ao bater em outro objeto parado?
Ah sim, eu mudei isso no código e deu certo kkkkk, foi erro meu, mas muito obrigado por ter me ajudado com isso.
Eu sou muito novo (em programação especificamente)
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante