Entrar
Últimos assuntos
» player não consegue andarpor 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
[Resolvido]Arrumar a direção dos tiros
5 participantes
GMBR :: Ensine & Aprenda :: Perguntas e Respostas :: Game Maker :: GMS:Windows
Página 1 de 1
[Resolvido]Arrumar a direção dos tiros
Ok, agora eu tenho uma dúvida grande, eu estou trabalhando em um jogo de plataforma mas com o sistema de tiro parecido com um top-down, tipo hotline miami onde a arma gira em volta do personagem, pra isso eu criei um obj separado pras armas, e já consegui fazer a arma rotacionar, mas n consigo fazer com que a arma grude no player. outro problema é fazer os tiros saírem do cano da arma, como posso fazer isso?
Paulomm32- Data de inscrição : 13/07/2020
Reputação : 0
Número de Mensagens : 46
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
Re: [Resolvido]Arrumar a direção dos tiros
Poderia compartilhar os códigos?
De um modo geral, sem ver o seu código ainda, digo que no evento create do objeto do tiro ele deverá assumir o mesmo valor de direction do objeto da arma.
De um modo geral, sem ver o seu código ainda, digo que no evento create do objeto do tiro ele deverá assumir o mesmo valor de direction do objeto da arma.
polosam- Games Ranking :
Notas recebidas : A + B
Data de inscrição : 20/12/2010
Reputação : 120
Número de Mensagens : 749
Prêmios :
x 0 x 0 x 0
x 1 x 1 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
Re: [Resolvido]Arrumar a direção dos tiros
polosam escreveu:Poderia compartilhar os códigos?
De um modo geral, sem ver o seu código ainda, digo que no evento create do objeto do tiro ele deverá assumir o mesmo valor de direction do objeto da arma.
isso ta no obj da arma:
image_angle = point_direction(x,y,mouse_x,mouse_y);
var dir = image_angle;
key_tiro = mouse_check_button_pressed(mb_left)
if (key_tiro)
{
var b = instance_create_layer(x,y,"instances",obj_tiro)
b.direction = dir;
b.image_angle = dir;
}
Paulomm32- Data de inscrição : 13/07/2020
Reputação : 0
Número de Mensagens : 46
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
Re: [Resolvido]Arrumar a direção dos tiros
Eu escreveria isto no evento create do objeto do tiro:
- Código:
direction = objeto_arma.direction;
polosam- Games Ranking :
Notas recebidas : A + B
Data de inscrição : 20/12/2010
Reputação : 120
Número de Mensagens : 749
Prêmios :
x 0 x 0 x 0
x 1 x 1 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
Paulomm32 gosta desta mensagem
Re: [Resolvido]Arrumar a direção dos tiros
polosam escreveu:Eu escreveria isto no evento create do objeto do tiro:
- Código:
direction = objeto_arma.direction;
ok, mas esse código resolve qual dos problemas?
Paulomm32- Data de inscrição : 13/07/2020
Reputação : 0
Número de Mensagens : 46
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
Re: [Resolvido]Arrumar a direção dos tiros
Paulomm32 escreveu:polosam escreveu:Eu escreveria isto no evento create do objeto do tiro:
- Código:
direction = objeto_arma.direction;
ok, mas esse código resolve qual dos problemas?
Seria para adequar a direção dos tiros à direção para a qual a arma está apontando. Você não está conseguindo criar os tiros?
polosam- Games Ranking :
Notas recebidas : A + B
Data de inscrição : 20/12/2010
Reputação : 120
Número de Mensagens : 749
Prêmios :
x 0 x 0 x 0
x 1 x 1 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
Re: [Resolvido]Arrumar a direção dos tiros
polosam escreveu:Paulomm32 escreveu:polosam escreveu:Eu escreveria isto no evento create do objeto do tiro:
- Código:
direction = objeto_arma.direction;
ok, mas esse código resolve qual dos problemas?
Seria para adequar a direção dos tiros à direção para a qual a arma está apontando. Você não está conseguindo criar os tiros?
sim eu estou conseguindo criar eles mas a arma fica separada do player, ela n fica colada no corpo dele entende?
Paulomm32- Data de inscrição : 13/07/2020
Reputação : 0
Número de Mensagens : 46
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
Re: [Resolvido]Arrumar a direção dos tiros
Para fazer com que a arma fique grudada no player, é preciso definir através do player qual é a posição que a arma deve ficar. Mas, antes disso, você deve armazenar em uma variável qual é a instância dessa arma para que futuramente possamos controlar sua posição.
Portanto, no evento create do objeto que segurará a arma:
O segundo passo é fazer com que a arma fique onde deve ficar, ou seja, grudado no player. É um processo bem simples, basta definir a posição da arma baseado no player. Portanto, no step do player:
Já temos a arma e ela acompanha o player. Agora, falta apenas fazer com que o tiro saia pela ponta da arma. Para tal, utilizaremos da magia do lengthdir.
Você pode utilizar este código no player ou na arma, o que você achar mais conveniente. Para este exemplo, considere o que o código está controlado na arma. No comando para atirar:
Ou seja, se seu sprite tem 16px de largura com os eixos centralizados e a ponta da arma está no canto direito, então temos 16 - 8 = 8. Não vou conseguir achar uma maneira muito boa de explicar isso, é confuso até pra mim ( ), mas, de todo modo, vá brincando com os valores até encontrar uma configuração que te agrade.
Poupei os detalhes, mas se precisar de mais explicações, basta dar um alô. Se você pesquisar por lengthdir_x aqui no fórum, muito provavelmente você encontrará outros exemplos pra se basear.
Boa sorte!
Portanto, no evento create do objeto que segurará a arma:
- Código:
arma = instance_create(x,y, obj_arma);
O segundo passo é fazer com que a arma fique onde deve ficar, ou seja, grudado no player. É um processo bem simples, basta definir a posição da arma baseado no player. Portanto, no step do player:
- Código:
arma.x = x;
arma.y = y;
Já temos a arma e ela acompanha o player. Agora, falta apenas fazer com que o tiro saia pela ponta da arma. Para tal, utilizaremos da magia do lengthdir.
Você pode utilizar este código no player ou na arma, o que você achar mais conveniente. Para este exemplo, considere o que o código está controlado na arma. No comando para atirar:
- Código:
_x = x + lengthdir_x(8, direction);
_y = y + lengthdir_y(8, direction);
instance_create(_x, _y, obj_bullet);
Ou seja, se seu sprite tem 16px de largura com os eixos centralizados e a ponta da arma está no canto direito, então temos 16 - 8 = 8. Não vou conseguir achar uma maneira muito boa de explicar isso, é confuso até pra mim ( ), mas, de todo modo, vá brincando com os valores até encontrar uma configuração que te agrade.
Poupei os detalhes, mas se precisar de mais explicações, basta dar um alô. Se você pesquisar por lengthdir_x aqui no fórum, muito provavelmente você encontrará outros exemplos pra se basear.
Boa sorte!
Super Games, polosam, Diemorth e Paulomm32 gostam desta mensagem
Re: [Resolvido]Arrumar a direção dos tiros
Willy escreveu:Para fazer com que a arma fique grudada no player, é preciso definir através do player qual é a posição que a arma deve ficar. Mas, antes disso, você deve armazenar em uma variável qual é a instância dessa arma para que futuramente possamos controlar sua posição.
Portanto, no evento create do objeto que segurará a arma:Com isto, temos a referencia da arma guardada na variável "arma".
- Código:
arma = instance_create(x,y, obj_arma);
O segundo passo é fazer com que a arma fique onde deve ficar, ou seja, grudado no player. É um processo bem simples, basta definir a posição da arma baseado no player. Portanto, no step do player:Note que utilizamos a variável criada anteriormente para definir a posição. Recomendo que este código esteja abaixo do código de movimentação do player ou que seja usado no end-step para garantir que a posição da arma seja definida no momento certo, caso contrário, você vai ter a impressão que a arma está "seguido" ao invés de "grudada".
- Código:
arma.x = x;
arma.y = y;
Já temos a arma e ela acompanha o player. Agora, falta apenas fazer com que o tiro saia pela ponta da arma. Para tal, utilizaremos da magia do lengthdir.
Você pode utilizar este código no player ou na arma, o que você achar mais conveniente. Para este exemplo, considere o que o código está controlado na arma. No comando para atirar:Não vou explicar como este código funciona por debaixo dos panos, mas, basicamente, ele calcula uma direção pra você. "x" e "y" são as coordenadas da arma. O "8" passado como argumento para o lengthdir define em pixeis, qual é o ponto que você está se referenciado (lembre-se de considerar o eixo do sprite, que, provavelmente, está centralizado).
- Código:
_x = x + lengthdir_x(8, direction);
_y = y + lengthdir_y(8, direction);
instance_create(_x, _y, obj_bullet);
Ou seja, se seu sprite tem 16px de largura com os eixos centralizados e a ponta da arma está no canto direito, então temos 16 - 8 = 8. Não vou conseguir achar uma maneira muito boa de explicar isso, é confuso até pra mim ( ), mas, de todo modo, vá brincando com os valores até encontrar uma configuração que te agrade.
Poupei os detalhes, mas se precisar de mais explicações, basta dar um alô. Se você pesquisar por lengthdir_x aqui no fórum, muito provavelmente você encontrará outros exemplos pra se basear.
Boa sorte!
cara, muito obrigado mas n deu certo, a parte da arma que cola no player funcionou mas a do lengthdir não.
aqui estão os códigos da arma se precisar:
image_angle = point_direction(x,y,mouse_x,mouse_y);
var dir = image_angle;
key_tiro = mouse_check_button_pressed(mb_left)
if (key_tiro)
{
var b = instance_create_layer(x,y,"instances",obj_tiro)
b.direction = dir;
b.image_angle = dir;
}
Paulomm32- Data de inscrição : 13/07/2020
Reputação : 0
Número de Mensagens : 46
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
Re: [Resolvido]Arrumar a direção dos tiros
O código que o @Willy disponibilizou parece suprir isso... Faltou você ajustar só.
No código da arma é onde você vai colocar o terceiro bloco de código, deve ficar algo assim:
Estou supondo que o problema seja esse com base no que você falou, se precisar ajustar ou não estiver funcionando, ajuda se você puder detalhar mais ou trouxer imagens.
No código da arma é onde você vai colocar o terceiro bloco de código, deve ficar algo assim:
- Código:
image_angle = point_direction(x, y, mouse_x, mouse_y);
var dir = image_angle;
key_tiro = mouse_check_button_pressed(mb_left)
if (key_tiro){
var _x = x + lengthdir_x(8, direction);
var _y = y + lengthdir_y(8, direction);
var b = instance_create_layer(_x, _y, "instances", obj_tiro);
b.image_angle = dir;
b.direction = dir;
}
Estou supondo que o problema seja esse com base no que você falou, se precisar ajustar ou não estiver funcionando, ajuda se você puder detalhar mais ou trouxer imagens.
Paulomm32 gosta desta mensagem
Re: [Resolvido]Arrumar a direção dos tiros
Diemorth escreveu:O código que o @Willy disponibilizou parece suprir isso... Faltou você ajustar só.
No código da arma é onde você vai colocar o terceiro bloco de código, deve ficar algo assim:
- Código:
image_angle = point_direction(x, y, mouse_x, mouse_y);
var dir = image_angle;
key_tiro = mouse_check_button_pressed(mb_left)
if (key_tiro){
var _x = x + lengthdir_x(8, direction);
var _y = y + lengthdir_y(8, direction);
var b = instance_create_layer(_x, _y, "instances", obj_tiro);
b.image_angle = dir;
b.direction = dir;
}
Estou supondo que o problema seja esse com base no que você falou, se precisar ajustar ou não estiver funcionando, ajuda se você puder detalhar mais ou trouxer imagens.
cara, consegui arrumar usando y_offset, mas como a arma segue o mouse quando eu mecho a direção parece que muda e ele sai por um cantos diferentes.
Paulomm32- Data de inscrição : 13/07/2020
Reputação : 0
Número de Mensagens : 46
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
Re: [Resolvido]Arrumar a direção dos tiros
Troque o "direction" no "lengthdir" por "dir". Dentro do código, vai fazer mais sentido.seu code escreveu:
- Código:
if (key_tiro){
var _x = x + lengthdir_x(8, direction);
var _y = y + lengthdir_y(8, direction);
var b = instance_create_layer(_x, _y, "instances", obj_tiro);
b.image_angle = dir;
b.direction = dir;
}
"direction" é uma variável nativa, não vai dar erro por mais que não esteja definida. Pro tiro sair da ponta da arma que aponta pro mouse, você tem que usar o mesmo ângulo que aponta pro mouse.
Última edição por saim em Seg 17 Ago 2020, 14:08, editado 1 vez(es) (Motivo da edição : errata)
saim- Games Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios :
x 1 x 6 x 0
x 1 x 0 x 3
x 0 x 0 x 0
Super Games, Diemorth e Paulomm32 gostam desta mensagem
Re: [Resolvido]Arrumar a direção dos tiros
Realmente @saim! Acabou passando despercebido, obrigado por pontuar isso.
Só pra complementar, é bom lembrar que isso vai sair com a posição relativa ao pivô da sprite, ou seja, tenha em mente que isso vai pegar o ponto x e y da sprite da arma pra usar como base na hora de calcular a posição do _x e _y, que é onde o obj_tiro vai ser criado.Paulomm32 escreveu:cara, consegui arrumar usando y_offset, mas como a arma segue o mouse quando eu mecho a direção parece que muda e ele sai por um cantos diferentes.
Super Games e Paulomm32 gostam desta mensagem
Re: [Resolvido]Arrumar a direção dos tiros
Ok, muito obrigado a todo mundo que ajudou
Paulomm32- Data de inscrição : 13/07/2020
Reputação : 0
Número de Mensagens : 46
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
GMBR :: Ensine & Aprenda :: Perguntas e Respostas :: Game Maker :: GMS:Windows
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos