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
» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» Como ajustar velocidade de cada frame da animação no game maker
por Ralphed Qui 18 Abr 2024, 18:28

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39


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