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. |
"HP" de objeto
"HP" de objeto
Opa gente, e aí. Bem, eu não sou muito familiarizado ao GMS mas eu tenho me esforçado pra aprender "na marra", porque eu gosto de treinar bastante por conta própria, aprendendo algumas mecânicas mais específicas em alguns vídeos quando necessário. Mas no momento eu tô fazendo um projeto de estudos só com o que eu "sei", e tô tendo dois problemas. Eu fiz uma caixa com uma variável de HP, que tem um valor específico, e quando fica menor ou igual a 0, ela é destruída, ok. Junto a isso, eu fiz um sistema feio de knockback (x+=10, x-=10, y+=10, y-=10), e tava tudo ok. Mas eu decidi fazer um knockback direito, porque né, fica feio a caixa "teleportando". Tirando esse knockback superficial, eu percebi q a caixa é destruída na mesma hora q eu ataco, eu acho q tem algo a ver com a colisão do hitbox do player. Como faço pra resolver isso? Eu não sei explicar direito, deem uma olhada no projeto:
arquivo do projeto.gmz
arquivo do projeto.gmz
Re: "HP" de objeto
Ao inves de colocar: x += 10 ou x -=10 tenta por: hspeed += 2
Hspeed é velocidade horizontal ou seja ao inves de se teleportar ele vai aumentar a velocidade, o movimento vai ser mais suave, o msm serve para Y mas no caso vc usaria Vspeed (velocidade vertical).
E tb pode adicionar Friction = 0.5 (no create event) assim ele vai parando lentamente até parar totalmente. Vai trabalhando com os valores de Friction, Vspeed e Hspeed até chegar num resultado satisfatorio, espero q tenha ajudado!
Lembrando q
X+ é Direita
X- é Esquerda
Y- é pra Cima
Y+ é pra Baixo
Hspeed é velocidade horizontal ou seja ao inves de se teleportar ele vai aumentar a velocidade, o movimento vai ser mais suave, o msm serve para Y mas no caso vc usaria Vspeed (velocidade vertical).
E tb pode adicionar Friction = 0.5 (no create event) assim ele vai parando lentamente até parar totalmente. Vai trabalhando com os valores de Friction, Vspeed e Hspeed até chegar num resultado satisfatorio, espero q tenha ajudado!
Lembrando q
X+ é Direita
X- é Esquerda
Y- é pra Cima
Y+ é pra Baixo
Re: "HP" de objeto
é simples, ao invés de destruir o objeto quando ele chega ao hp 0 você pode botar um alarm (30 steps por exemplo) e no evento alarm você coloca a destruição do objeto
Patreon: https://www.patreon.com/jozgames
Steam Games: https://store.steampowered.com/curator/41245716/
Free PC Games: https://gamejolt.com/@JOZGamer/games
Free Android Games: https://play.google.com/store/apps/dev? ... 9199385981
Steam Games: https://store.steampowered.com/curator/41245716/
Free PC Games: https://gamejolt.com/@JOZGamer/games
Free Android Games: https://play.google.com/store/apps/dev? ... 9199385981
- junior.rod2
- Moderador
- Reações: 0
- Mensagens: 101
-
Re: "HP" de objeto
O problema não é exatamente na hitbox de colisão e sim na forma como o código de colisão é executado, tipo, o GM continua executando o código do evento de colisão enquanto a colisão estiver acontecendo, isso que dizer que o código de colisão pode ser executado varias vezes seguidas se você não colocar uma condição ou algo do tipo.
O que estava acontecendo no seu projeto foi que o código de colisão estava disparando varias vezes e "tirando mais que 1 de dano da caixa", tudo que eu precisei fazer para corrigir foi colocar um:
para destruir os objetos que tiram vida das caixas, no fim do código, evitando que o evento de colisão dispara-se mais de uma vez.
Minha explicação ficou meio confusa, mas espero que consiga entender.
bom, precisando, é só chamar ai.
Aqui esta o seu projeto sem o tal "bug": https://www.dropbox.com/s/db6zb6h70ej69rd/learning2%202.gmz?dl=1
====================================================================================================================
Edit
Você falou que estava precisando de um sistema de knockback, então eu tomei a liberdade de fazer um bem simples que talvez te ajude, esta bem simples mesmo, mas dá para usar.
link: https://www.dropbox.com/s/xuhk9dtpno8df04/learning2%20_Com%20knockback_.gmz?dl=1
O que estava acontecendo no seu projeto foi que o código de colisão estava disparando varias vezes e "tirando mais que 1 de dano da caixa", tudo que eu precisei fazer para corrigir foi colocar um:
Código: Selecionar todos
with other instance_destroy();
Minha explicação ficou meio confusa, mas espero que consiga entender.
bom, precisando, é só chamar ai.
Aqui esta o seu projeto sem o tal "bug": https://www.dropbox.com/s/db6zb6h70ej69rd/learning2%202.gmz?dl=1
====================================================================================================================
Edit
Você falou que estava precisando de um sistema de knockback, então eu tomei a liberdade de fazer um bem simples que talvez te ajude, esta bem simples mesmo, mas dá para usar.
link: https://www.dropbox.com/s/xuhk9dtpno8df04/learning2%20_Com%20knockback_.gmz?dl=1
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes