Procurar
 
 

Resultados por:
 


Rechercher Pesquisa avançada

Quem está conectado?
2 usuários online :: 0 registrados, 0 invisíveis e 2 visitantes

Nenhum

O recorde de usuários online foi de 83 em Ter 04 maio 2021, 20:18
Parceiros
Estatísticas
Temos 208 usuários registrados
O último membro registrado é walef

Os nossos membros postaram um total de 286 mensagens em 74 assuntos
Últimos assuntos
» [01#PHOTOSHOP] Inicio - A interface
por Mega Arts Sáb 20 Out 2012, 10:40

» [PEDIDO] Sistema de Pontos
por WillianAssis Dom 22 Jul 2012, 08:30

» [TUTORIAL] Como fazer o player voar.
por Shadow10 Sáb 23 Jun 2012, 07:02

» [Link Fixo] Pong
por FabiioW Dom 03 Jun 2012, 19:51

» [Link Fixo] Super Engine
por FabiioW Dom 03 Jun 2012, 19:42

» [Novidades]
por Mega Arts Sáb 12 maio 2012, 07:53

» Obj ter x e y fixo seguindo a view
por Shadow10 Qui 10 maio 2012, 19:29

» [Remake] Bobby Carrot 1
por Shadow10 Sáb 05 maio 2012, 09:05

» [Programa/Software]Downsligator by Shadow10
por Shadow10 Dom 09 Out 2011, 15:21

Flux RSS


Yahoo! 
MSN 
AOL 
Netvibes 
Bloglines 


março 2024
DomSegTerQuaQuiSexSáb
     12
3456789
10111213141516
17181920212223
24252627282930

Calendário Calendário

Navegação
 Portal
 Índice
 Membros
 Perfil
 FAQ
 Buscar
[Tutorial] Fazendo um jogo de tiro // vale a pena

Seg 25 Jul 2011, 19:40 por N.U.C.L.E.A.R

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:
[Tutorial] Fazendo um jogo de tiro // vale a pena  Spr_pl10
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.

Comentários: 3