Gm Programador

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

Forum sobre o game maker, top de linha em 3D

Palavras-chaves

2014  2010  2011  

Entrar

Esqueci-me da senha

Últimos assuntos

» Criar jogo de pesca
por AndreCorinthians2016 Sex Fev 06, 2015 9:56 pm

» Ei, Tenho uma ideia!!
por Convidado Sex Mar 28, 2014 12:48 am

» Projeto para jogo mobile
por trixview Sex Mar 21, 2014 8:23 pm

» Apresentação
por HostGamingBR Sáb Out 19, 2013 4:28 pm

» KillSwitch Novo game de FPS 2014 ! Inscrevase !
por SparkyTM25 Qua Out 16, 2013 10:03 pm

» Parceria para criar jogos
por Sam_punkiller Qua Jan 18, 2012 9:57 pm

» [GMLucas] Jumper
por lucas8lima Sex Dez 09, 2011 3:49 pm

» [Concurso 30/10/2011 ate 08/12/2011] o Melhor Game [veja a premiação]
por GMLucas Sex Dez 09, 2011 3:35 pm

» voltei galera
por lucas8lima Ter Dez 06, 2011 11:46 pm

Os membros mais ativos da semana

Nenhum usuário

Quem está conectado?

1 usuário online :: 0 registrados, 0 invisíveis e 1 visitante

Nenhum


[ Ver toda a lista ]


O recorde de usuários online foi de 135 em Ter Mar 09, 2021 8:55 pm

Xat Gm programador

Parceiros

Fórum grátis


    [Tutorial] - Criando um jogo de tiro ::

    Uriel.56
    Uriel.56
    Admin
    Admin


    Mensagens : 99
    Pontos : 203
    Data de inscrição : 07/10/2011
    Idade : 25
    Localização : Caicó RN

    [Tutorial] - Criando um jogo de tiro :: Empty [Tutorial] - Criando um jogo de tiro ::

    Mensagem  Uriel.56 Seg Out 10, 2011 2:53 pm

    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.


    Agora crie o obj_player com a sprite dele é claro.

    Em seu create coloque:

    CÓDIGO:
    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:
    Código:

    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:
    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:
    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:
    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:
    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:
    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:
    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:
    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:
    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:
    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:
    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:
    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:
    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:
    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:
    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.


    Tuto criado por pinpi, Ré-Formatado por Admin

      Data/hora atual: Sáb maio 11, 2024 7:52 am