[Tutorial] Fazendo um jogo de tiro // vale a pena dar uma olhada.

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Qualidade [Tutorial] Fazendo um jogo de tiro // vale a pena dar uma olhada.

Mensagem por Lukbebalduke em Sex 22 Jul 2011, 12:26

Fazendo um jogo de tiro

Introdução
E ai blz galera ? Bom eu tava sem nada pra faze e resolvi faze um tuto, ai veio a ideia de fazer um sobre jogos de tiro top view. Esse ensina mais a parte de fazer a arma mesmo, então se tiver interesado le ai, é no minimo interesante.
Fazendo sua arma atirar e mirar
Vamo começa então né, bom... fassa uma sprite de uma pessoa com uma arma,vista top view, centralizada no meio do player.
Exemplo tipo essa:

Agora crie o obj_player com a sprite dele é claro.

Em seu create coloque:

Código:
atirar=true
cartucho=10
cartuchoo=10
municao=50
forca=35
veloci=14
velocii=15
recarrega=15
mira=15
arma=1
a=0
carregando=false

Aqui criamos as variveis da arma, muitas para facilitar na hora de criar varias armas ai você só precisa alterar essas variaveis e não o codigo inteiro. agora a tradução:

atirar=true // essa var é a que define se pode atirar ou não, para não fica aquela rajada de tiros que nunca para
cartucho // esse é o tanto de tiro que tem na arma
cartuchoo // esse é o maximo de tiros que cabe na arma
municao // é o tanto de tiros que ainda pode usar
forca // o tando de vida que o tiro vai tirar do inimigo
veloci // velocidade do tiro
velocii // velocidade entre um tiro e o outro, EX: de uma pistola é 15, de uma metralha é 4
recarrega // tempo que leva para recarregar
mira // é o tanto de chance que tem de errar o tiro. O de uma sniper por exemplo é 0
arma // essa é a var que define com qual arma ele está tipo assim ARMA 1 = pistola, ARMA 2= AK47
a // esse é o valor que tem de balas sem nada, vc vai entender depois.
carregando=false // verifica se ta carregando.

Alguma duvida ? Então vamo lá

Agora no step coloque:

Código:
direction=point_direction(x,y,mouse_x,mouse_y)
image_angle=direction

Isso é para a imagem, faz com que a direção do player mire para o mouse junto com o angulo da sprite.

Agora no mesmo codigo:

Código:
if keyboard_check(vk_left) and place_free(x-4,y)
x-=4
if keyboard_check(vk_right) and place_free(x+4,y)
x+=4
if keyboard_check(vk_up) and place_free(x,y-4)
y-=4
if keyboard_check(vk_down) and place_free(x,y+4)
y+=4
E não se esqueça para nao dar o bug da arma presa na parede coloque uma mask do tamanho do corpo do player, um circulo de 32x32. Esse codigo se você não entendeu va ler as aulas do redragon.

Pronto agora o nosso player já mira e anda. Mas e os tiros ?

Antes de tudo crie um obj_tiro com uma sprite de tiro. Nele coloque assim no create:

Código:
forca=0

Isso cria a var forca, que é a força do tiro. E na colisão com o inimigo, que eu não vou ensinar a fazer coloque assim:

Código:
other.vida-=forca
instance_destroy()

Isso tira da vida dele a sua força, e destroi a bala.

Agora no step:

Código:
image_angle=direction

Isso eu já expliquei.Deixa o angulo da sprite igual ao da direção.

Agore vamos voltar ao step do player que deve estar assim:

Código:
direction=point_direction(x,y,mouse_x,mouse_y)
image_angle=direction
//
if keyboard_check(vk_left) and place_free(x-4,y)
x-=4
if keyboard_check(vk_right) and place_free(x+4,y)
x+=4
if keyboard_check(vk_up) and place_free(x,y-4)
y-=4
if keyboard_check(vk_down) and place_free(x,y+4)
y+=4

Agora nesse codigo adicione mais isso:

Código:
if mouse_check_button_pressed(mb_left) and atirar=true and cartucho>=1 and arma=1 and carregando=false
{
cartucho-=1
atirar=false
alarm[0]=velocii
tiro=instance_create(x,y,obj_tiro)
tiro.speed=veloci
tiro.forca=forca
tiro.direction=direction
tiro.direction+=random_range(-mira,mira)
}
TRADUZINDO...

Caso o mouse sejá precionado e possa atirar e tenha bala, e a arma seja 1 e não estaja carregando:
perde uma bala
não pode atirar
ativa o alarm 0 de acordo com o tempo entre os tiros da arma
cria o tiro
tiro fica na velocidade dele
tiro fica com a força dele
tiro vai para a direção da direção do player (o mouse)
tiro aumenta a direção entre a mira negativa e a mira positiva, fazendo assim com que de aquela erradinha.

OBS1: Não esqueça o depth do player tem que ser menor que o da bala.
OBS2: Não esquece de marcar "Interpolate colors between pixels" lá em "Global Game Settings"


Seu codigo do step do player deve estar assim:

Código:
direction=point_direction(x,y,mouse_x,mouse_y)
image_angle=direction
//
if keyboard_check(vk_left) and place_free(x-4,y)
x-=4
if keyboard_check(vk_right) and place_free(x+4,y)
x+=4
if keyboard_check(vk_up) and place_free(x,y-4)
y-=4
if keyboard_check(vk_down) and place_free(x,y+4)
y+=4
//
if mouse_check_button_pressed(mb_left) and atirar=true and cartucho>=1 and arma=1 and carregando=false
{
cartucho-=1
atirar=false
alarm[0]=velocii
tiro=instance_create(x,y,obj_tiro)
tiro.speed=veloci
tiro.forca=forca
tiro.direction=direction
tiro.direction+=random_range(-mira,mira)
}

Agora no alarm 0 coloque:

Código:
atirar=true

Pronto agora o player atira anda e mira. Mas e a munição ? Vamo faze o player recarregar.

Lembra daquele varsinha chamada "a" ? Então vamu usa ela agora, coloca assim no step:

Código:
a = cartuchoo - cartucho

ou seja

10 - balas da arma = a

Isso é, "a" é o tanto de balas que cabe na arma.

Ai vc coloca mais assim:

Código:
if keyboard_check_pressed(vk_space) and carregando=false
{
alarm[1]=recarrega
carregando=true
}

Isso é caso spaço seja apertado, e não esteja carregando, ele vai recarrega (ativa o alarm 1 de acordo com a var recarrega e diz que ta carregando)

Agora seu step deve estar assim:

Código:
direction=point_direction(x,y,mouse_x,mouse_y)
image_angle=direction
//
if keyboard_check(vk_left) and place_free(x-4,y)
x-=4
if keyboard_check(vk_right) and place_free(x+4,y)
x+=4
if keyboard_check(vk_up) and place_free(x,y-4)
y-=4
if keyboard_check(vk_down) and place_free(x,y+4)
y+=4
//
if mouse_check_button_pressed(mb_left) and atirar=true and cartucho>=1 and arma=1 and carregando=false
{
cartucho-=1
atirar=false
alarm[0]=velocii
tiro=instance_create(x,y,obj_tiro)
tiro.speed=veloci
tiro.forca=forca
tiro.direction=direction
tiro.direction+=random_range(-mira,mira)
}
//
a = cartuchoo - cartucho
if keyboard_check_pressed(vk_space) and carregando=false
{
alarm[1]=recarrega
carregando=true
}

Agora coloque assim no alarm 1:

Código:
municao -= a
cartucho +=a
carregando=false

Isto é:

tira o valor "a" da municao e aumenta o valor "a" do cartucho. e diz que não ta mais carregando

Pronto agora ele carrega e tudo mais. Mais falta mostrar as balas. Crie um obj_controle e em seu draw coloque:

Código:
draw_text(0,0,"Balas: " + string(obj_player.cartucho) + " / " + string(obj_player.municao))

Esse é um draw_text normal só que ficou meio extenso pq vem "texto + string + texto + string"

Então só o ultimo recadinho pessoal.

Eu demorei tempo para fazer esse tuto, e posso ter errado em alguma coisa, então se ver algo errado avisa ae que eu arrumo, eu fui fanzendo e testando, deu tudo certo aqui. Proxima aula vou ensinar a usar aquele var "arma"

FLW COMENTA AE.


Última edição por pinpi em Seg 25 Jul 2011, 20:41, editado 1 vez(es)

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Fazendo um jogo de tiro // vale a pena dar uma olhada.

Mensagem por uriel.56 em Sex 22 Jul 2011, 13:40

Gostei do Tutorial, achei bem legal, para ajudar os iniciantes no assunto, como aqui no forum tem muitos...

Eu ainda naum testei o Tutorial, pq também eu ja sei sobre o assunto, mais, espero que os Avaliadores, aprovem seu Tutorial...

Flws.. Cool

uriel.56

Número de Mensagens : 430
Idade : 19
Data de inscrição : 13/02/2010
Reputação : -2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Fazendo um jogo de tiro // vale a pena dar uma olhada.

Mensagem por Pit Bull em Sex 22 Jul 2011, 13:45

Muito bom o tutorial,mas eu uso arrays nas variáveis,mais rápido para escrever é não preciso decorar todas as variáveis.

Dei uma lida rápida e não achei nada de errado.

Nota:10(para iniciantes)

Pit Bull

Número de Mensagens : 630
Idade : 21
Data de inscrição : 31/08/2010
Reputação : 15
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://leninja.com.br

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Fazendo um jogo de tiro // vale a pena dar uma olhada.

Mensagem por Lukbebalduke em Sex 22 Jul 2011, 15:39

valeu ai galera. Vou fazer a parte 2 o mais rapido possivel. Pesso que um avaliador avalie.

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Fazendo um jogo de tiro // vale a pena dar uma olhada.

Mensagem por andreh em Sex 22 Jul 2011, 16:40

Bom tuto!
Ficou bem explicado e o tuto está completo!
Por mim: Aprovado

andreh

Ranking : Nota C
Número de Mensagens : 183
Idade : 20
Data de inscrição : 09/03/2011
Notas recebidas : C
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Fazendo um jogo de tiro // vale a pena dar uma olhada.

Mensagem por Lukbebalduke em Dom 24 Jul 2011, 16:00

Valeu pelo comentario. Agoro pesso que alguem decida se é aprovado ou não.

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Fazendo um jogo de tiro // vale a pena dar uma olhada.

Mensagem por Super Games em Dom 24 Jul 2011, 17:35

Ótimo tutorial Pinpi, realmente, qualidade nota 10!

Super Games

Ranking : Nota D
Número de Mensagens : 2704
Idade : 18
Data de inscrição : 10/06/2010
Notas recebidas : D
Reputação : 10
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Fazendo um jogo de tiro // vale a pena dar uma olhada.

Mensagem por Lukbebalduke em Seg 25 Jul 2011, 20:35

Valeu Super Games. Agora por favor alguem da staff avalie.

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Fazendo um jogo de tiro // vale a pena dar uma olhada.

Mensagem por LCS em Seg 25 Jul 2011, 22:59

O tutorial ficou bom cara, ontem eu movi ele para tutoriais aprovados, mas me esqueci de colocar o icone de aprovado.
Bom, agora já tem xD
flws

LCS

Ranking : Nota A
Número de Mensagens : 1035
Idade : 21
Data de inscrição : 09/03/2010
Notas recebidas : A
Reputação : 43
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://www.www.ww.www

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Fazendo um jogo de tiro // vale a pena dar uma olhada.

Mensagem por guto815 em Sab 06 Ago 2011, 20:56

E se eu quisesse em vez d colocar pro obj_player andar nas setas, colocar pra ele andar nas teclas "a", "s", "w" e "d"?

obrigado

guto815

Número de Mensagens : 3
Data de inscrição : 06/08/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Fazendo um jogo de tiro // vale a pena dar uma olhada.

Mensagem por andreh em Sab 06 Ago 2011, 22:09

Vc troca isso:
(vk_left)
por isso:
(ord("A"))

Aí é só fazer isso pras outras direçoes tbm!
Não se esqueça, a letra deve ser maiúscula e estar entre aspas!

andreh

Ranking : Nota C
Número de Mensagens : 183
Idade : 20
Data de inscrição : 09/03/2011
Notas recebidas : C
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Fazendo um jogo de tiro // vale a pena dar uma olhada.

Mensagem por guto815 em Dom 07 Ago 2011, 19:08

Ah, vlw, mas eu tenho outra duvida.. como eu faço pro tiro sair pela ponta da arma ao inves d sair pela barriga do obj_player?

obrigado

guto815

Número de Mensagens : 3
Data de inscrição : 06/08/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Fazendo um jogo de tiro // vale a pena dar uma olhada.

Mensagem por Dancity em Dom 07 Ago 2011, 19:20

Amigo, não tenho certeza mas basta você manipular/alterar o x e y deste código:

Step:
Código:
tiro=instance_create(x,y,obj_tiro)

Ex:
Código:
tiro=instance_create(x,y-5,obj_tiro)

Dancity

Ranking : Nota A
Número de Mensagens : 1339
Data de inscrição : 11/01/2009
Notas recebidas : A
Reputação : 8
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   :
   :

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Fazendo um jogo de tiro // vale a pena dar uma olhada.

Mensagem por Markituh em Dom 07 Ago 2011, 19:38

Sim, de uma forma mais fácil basta manipular os eixos, como o Dancity disse. Mas uma forma que é realmente muito usada por jogos de tiro, é usando lengthdir_x e lengthdir_y. As funções são para seus respectivos eixos. Os argumentos são len e dir. len seria o comprimento do "movimento" e dir a direção. É claro que você tem que usar as funções em relatividade com os eixos do seu objeto, por exemplo:
Código:
instance_create(x+lengthdir_x(10,direção),y-lengthdir_y(10,direção))
O que as funções fazem é retornar um valor de acordo com a direção e comprimento. Pode parecer um pouco complicado, mas se você souber um pouco de trigonometria irá ser mais fácil trabalhar com a função. Enquanto isso, pode optar por manipular os eixos relativamente Smile

Se o tiro sai da barriga do player é porque a origem está no centro - fato. A origem pode ser definida nas propriedades da sprite, na área "Origin", que fica lá em baixo. Você pode alterar com o mouse também, clicando e arrastando na miniatura ao lado. Assim, basta dar uma olhada na origem e você saberá qual o valor certo para colocar nos "y-5".

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Fazendo um jogo de tiro // vale a pena dar uma olhada.

Mensagem por guto815 em Dom 07 Ago 2011, 20:55

pois é, tentei mudar a origem, mas ai o personagem se vira como se tivesse usando uma .50 em um tanque, ai eu pensei se teria um jeito de definir que o tiro saia de uma posição da sprite do obj, assim sepre sairia pelo fim do cano da arma... se alguem souber fazer isso eu agradeceria xP^^

obrigado

EDIT: entadi esse codigo q vc passo, deve servir ja. Mas ainda gostaria de saber se tem como fazer isso q eu falei.. vlws^^

guto815

Número de Mensagens : 3
Data de inscrição : 06/08/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Fazendo um jogo de tiro // vale a pena dar uma olhada.

Mensagem por Lukbebalduke em Dom 07 Ago 2011, 21:39

Eu ia fazer também está pergunta hoje de manhã mas não deu tempo, teria que haver um jeito de fazer uma 2ªorigem , acho melhor criar um topico para essa pergunta.

Lukbebalduke

Ranking : Nota B
Número de Mensagens : 764
Data de inscrição : 06/07/2011
Notas recebidas : B - B - A - B
Reputação : 30
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Fazendo um jogo de tiro // vale a pena dar uma olhada.

Mensagem por Dancity em Dom 07 Ago 2011, 22:59

Poisé, mudar a orign pode (e vai) te atrapalhar muito. É muito melhor manipular o código ou fazer isso que o Markituh falou.

Dancity

Ranking : Nota A
Número de Mensagens : 1339
Data de inscrição : 11/01/2009
Notas recebidas : A
Reputação : 8
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   :
   :

Voltar ao Topo Ir em baixo

Qualidade iniciante leigaoooo

Mensagem por isaac138 em Sab 03 Mar 2012, 17:00

valeuuuuuuuuuuuuuuuuuuu migao cara se tu subese o quanto tu me ajudo tu podia pega meu email e tu me da aulas de gm 8 pro eu ate te pago agora eu entendo pra que os codigos e principalmente as variaveis antigamente pra min era um treco de 100 cabeças mas me diz como tu gravo todos esse codigos ou tu tem os codigos prontos e so formou a partir das variaveis bom de qualquer forma valeuuuuuuuuuuuuuuuuuuuuuuuuuu

isaac138

Número de Mensagens : 38
Data de inscrição : 11/02/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.infoirom.blogspot.com

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Fazendo um jogo de tiro // vale a pena dar uma olhada.

Mensagem por Potlic em Sex 27 Abr 2012, 23:07

Muito bom, só apresentei um erro mas eu mesmo concertei com minha "técnicas" Cool

Feliz EU SOU MUITO FELIZ COM GAME MAKER! Feliz

Potlic

Número de Mensagens : 8
Idade : 17
Data de inscrição : 22/04/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Qualidade Re: [Tutorial] Fazendo um jogo de tiro // vale a pena dar uma olhada.

Mensagem por Conteúdo patrocinado Hoje à(s) 20:07


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum