GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


Physics, bala na direção do player?

2 participantes

Ir para baixo

Physics, bala na direção do player? Empty Physics, bala na direção do player?

Mensagem por Katerp Sáb 01 Jul 2017, 23:22

Eae pessoal, beleza?
É o seguinte, estou com um projeto em desenvolvimento usando comandos da física nativa do gamemaker, minha versão é GameMaker: Studio standard.

o jogo é um clássico de naves e como todos jogos de nave, tem sempre aquela nave clichê que sempre da um tiro na direção da nave do jogador para destruí-la.
Então, crio a nave inimiga e crio o tiro da nave mas o máximo que consigo fazer é a bala
ir em uma unica direção x ou y com os comandos 'phy_speed_x' e' phy_speed_y'.
No caso a que fica melhor já que a minha nave esta na vertical é:
Step da bala da nave inimiga:
Código:
phy_speed_y = +8

Qual é a maneira que existe, usando physics, para que a bala assim que criada no jogo (assim que a nave inimiga atirar) vá em direção do player? não quero que a bala siga-o (o player vai pra cima e a bala segue, o player vai para baixo e a mesma bala continua o seguindo)
simplesmente quero que a nave atire na direção do jogador.

Caso alguma duvida sobre o jogo, basta deixar no comentario que atualizarei a pergunta.
Obrigado a todos, agradeço desde já!
Katerp
Katerp

Games Ranking : Nota D

Notas recebidas : D
Data de inscrição : 04/01/2014
Reputação : 6
Número de Mensagens : 81
Prêmios : Physics, bala na direção do player? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Physics, bala na direção do player? Empty Re: Physics, bala na direção do player?

Mensagem por Thiago Jaqueta Seg 03 Jul 2017, 15:47

Trigonometria!

GameMaker possui duas funções que vão facilitar sua vida:
lengthdir_x e lengthdir_y; Você coloca a direção e o distancia nas duas funções e ele vai retornar o valor correto para cada eixo.

Outra opção pode ser usar a função physics_apply_local_impulse.

Recomendo que de uma olhada no manual dessas 3 funções, e da physics_apply_impulse também para um melhor entendimento.

Lembre-se também, que na engine de física, o eixo Y funciona como o plano cartesiano que você aprendeu na escola, e não em em pixels (como normalmente é no GameMaker). Isso significa que você vai ter que multiplicar o valor do eixo y por -1.

GL Physics, bala na direção do player? 31640
Thiago Jaqueta
Thiago Jaqueta

Games Ranking : Sem avaliações

Data de inscrição : 29/06/2017
Reputação : 7
Número de Mensagens : 8
Prêmios : Physics, bala na direção do player? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://discord.gg/9VuJYjr

Ir para o topo Ir para baixo

Physics, bala na direção do player? Empty Re: Physics, bala na direção do player?

Mensagem por Katerp Ter 04 Jul 2017, 12:11

cara me da mais uma ajudinha..
eu li a respeito dos comandos que você falou no manual da GM, mas ainda não sei como aplica-las no jogo.

No Step do meu inimigo para criar a bala eu usei o seguinte código:
Código:
if atirou = false
{
    alarm[0] = choose(20,30)
    atirou = true
}
E no Alarm[0]:
Código:
instance_create(x,y+15,obj_tiro2)
atirou = false
isso faz um loop basico pra ele continuar atirarndo.

já na bala (obj_tiro2)
no seu Step, ainda sem usar os codigos que você falou:
Código:
phy_speed_y =+8

Pode me dizer aonde eu mudo para que a bala o siga?
Katerp
Katerp

Games Ranking : Nota D

Notas recebidas : D
Data de inscrição : 04/01/2014
Reputação : 6
Número de Mensagens : 81
Prêmios : Physics, bala na direção do player? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Physics, bala na direção do player? Empty Re: Physics, bala na direção do player?

Mensagem por Thiago Jaqueta Qui 06 Jul 2017, 00:07

Ao invés de aumentar a velocidade da bala a cada step, é muito mais simples você aplicar um impulso na bala AO CRIAR ELA.... Mais ou menos, vou explicar isso durante o código

Exemplo:
Código:
atirou = false; //resetamos o alarme
var bullet; //Criamos uma variavel temporaria
bullet=instance_create(x,y+15,obj_tiro2); //Instance create retorna o ID unico do objeto, assim você pode aplicar código especifico para este objeto a partir de outros.


with(bullet) //usar o "with" aqui, é como se eu estivesse escrevendo no create da bala, mas a partir do inimigo.
{
//Se este fosse um objeto normal do GameMaker, bastava nós definir a velocidade e a direção do objeto, simples. Mas como estamos usando a LiquidFun, precisaremos usar um pouco de criatividade. O "problema" de usar WITH no create, é que o código vai ser executado ANTES do create do objeto. Ou seja. se aplicarmos uma força na bala antes de definir a fixture e etc... iremos ter um erro porque a bala ainda não foi criada. Então o que faremos é: Definir duas variaveis proprias para nossa bala, direcao e forca, e depois NA BALA aplicaremos isso.
bullet_direction=point_direction(x,y,obj_player.x,obj_player.y) //Direcao da bala até o player, claro que isso deve ser melhorado depois para evitar bugs.
bullet_speed=15 //A velocidade da bala
}

Hora da gambiarra criatividade:
No create da bala, criaremos uma variavel setada em true;
Código:
apply_speed=true; //Isso vai determinar se a velocidade deve ser aplicada

E agora no step, caso apply_speed seja verdadeiro, aplicaremos a força, e colocamos apply_speed em falso, para que isso não aconteça de novo.
Código:

if (apply_speed)
{
apply_speed=false; //Não precisamos mais aplicar força
var xspeed,yspeed; //Criamos duas variaveis temporarias para a velocidade do eixo X e Y;

    xspeed=lengthdir_x(bullet_speed,bullet_direction); //Definimos a velocidade para caida eixo
    yspeed=lengthdir_y(bullet_speed,bullet_direction);
    
physics_apply_impulse(x,y,x+xspeed,y+lengthdir_y(bullet_speed,bullet_direction)); //E finalmente, aplicamos a força.
}

Acho que é isso. Se você tiver algum problema, pode me chamar no Discord (Jaqueta#7987) que lá eu consigo te ajudar na hora.
Thiago Jaqueta
Thiago Jaqueta

Games Ranking : Sem avaliações

Data de inscrição : 29/06/2017
Reputação : 7
Número de Mensagens : 8
Prêmios : Physics, bala na direção do player? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://discord.gg/9VuJYjr

Ir para o topo Ir para baixo

Physics, bala na direção do player? Empty Re: Physics, bala na direção do player?

Mensagem por Katerp Qui 06 Jul 2017, 09:13

não.. ainda não deu, a bala está indo na direção de uns 190 graus, totalmente pro lado direito da tela ao invés de ir na direção do player, ela está bem rápida mas a velocidade dela não é problema, de qualquer modo, te chamei no discord pra poder conversar, se souber o que acontesse e querer colocar aqui no forum mesmo não tem problema.

Uma imagem do que está acontecendo:
Physics, bala na direção do player? E7Fhx6u
Katerp
Katerp

Games Ranking : Nota D

Notas recebidas : D
Data de inscrição : 04/01/2014
Reputação : 6
Número de Mensagens : 81
Prêmios : Physics, bala na direção do player? Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Physics, bala na direção do player? Empty Re: Physics, bala na direção do player?

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos