Pacotão de duvidas

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

Pacotão de duvidas

Mensagem por marcin_w_ em Sab 26 Abr 2014, 15:21

Tenho algumas dúvidas e decidi postar todas num só tópico afinal trata-se do mesmo projeto.

Meu projeto é um TDS shooter, trabalho nele a 3 anos, o desenvolvimento entrou em uma fase crucial na transformação dele em um jogo viciante ou apenas algo que poderia ter dado certo.

O problemas que enfrento acredito ser de nivel principiante/mediano portanto não muitos de vcs terão facilidade em me esclarecer.

1 - Tenho uma arma que se move em 360 direções, minha vontade sempre foi de que caso o objeto_alvo estivesse obstruído por algum outro objeto ...que a arma não atirasse apenas apontasse. Decidi então usar uma função que desenha uma linha entre a arma e o alvo (draw_line_color(x, y, objPlayer.x, objPlayer.y, c_red, c_red);) e coloquei essa função no draw da arma........porém agora meu problema eh saber como fazer para essa linha quando em colisão com algum objeto que esteja entre a arma e o alvo pare de chegar até o alvo. e pior que isso....fazer com que o objetoARMA reconheça que essa linha não chegou no objPlayer e assim pare de atirar com uma variavel por exemplo podeatirar=0


2- Gostaria tbm de saber como desabilitar as funções de objetos parents......por exemplo eu tenho o objPlayer....e criei um parent pra ele que é o objPlayer agachado.....porém gostaria que agachado ele não atirasse......quero saber como fazer para o objeto ser apenas reconhecido como parent mas que nao tenha as funções do objeto parent.....pra ser mais claro....quero que varios objetos diferentes  "agachado,pulando, rastejando" tenham funções difrentes...mas sejam reconhecidos como parents do obj Player.....pois no resultado serão o "msmo objeto"

3- Voltando a arma 360 , gostaria de saber como fazer para que ela aponte para o player (isso eu ja sei fazer) porém...com um delay....tipo...segue ele mas não imediata e precisamente como ja fiz...quero q exista um delay...ou ateh um erro de alvo.

4 -Voltando tbm as lines, como fazer para que dependendo do tamanho da linha desenhada pelo draw o objeto tenha uma atitude diferente....por exemplo....se a linha entre ele e o objeto que obstrui estiver mt pequena....ele nem atira msmo...pq estará perto de uma parede ou algo do tp....e nao faria sentido atirar..........

5- como fazer um pulo TDS?...tipo criar objetos que definam que ali o objeto está mais alto...e q quando chegar na beirada vai cair?....tp...subir em uma caixa...essa eu sei q vai ser mais dificil..mas se algm tiver uma ideia da uma luz...

Bom...por enquanto é isso, abraço pessoal.

marcin_w_

Número de Mensagens : 77
Idade : 26
Data de inscrição : 25/11/2012
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Pacotão de duvidas

Mensagem por Gabreel em Sab 26 Abr 2014, 15:38

Precisamos de códigos! Happy

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Pacotão de duvidas

Mensagem por polosam em Sab 26 Abr 2014, 15:41

Eu não sei usar direito muitas funções, por isso sempre crio um atalho de raciocínio e termino resolvendo o problema bolando umas gambiarras bem surreais e demoradas...  computador 

 Não vou poder te ajudar respondendo todas as perguntas separadamente, o que é uma pena, mas posso te dar uma ideia: no caso de só atirar se o caminho estiver livre, você poderia disparar uma bala invisível que não afeta o player, mas que ao colidir com ele envia um sinal para o canhão que indica podeatirar=1 (objetos pelo caminho barrariam ela e neutralizariam a "intenção" da arma.)

 Espero que algum usuário top apareça por aqui pra te dar uma luz, da minha parte é só.  

polosam

Número de Mensagens : 424
Idade : 24
Data de inscrição : 20/12/2010
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Pacotão de duvidas

Mensagem por marcin_w_ em Sab 26 Abr 2014, 15:58

Cara, ja pensei em tanta coisa, inclusive nessa ideia, mas se vc analisar ela bem..não é funcional....msmo assim obrigado e abraço.

marcin_w_

Número de Mensagens : 77
Idade : 26
Data de inscrição : 25/11/2012
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Pacotão de duvidas

Mensagem por Willy em Sab 26 Abr 2014, 16:44

1 - Só atirar se o caminho estiver livre:
Para isso temos o collision_line! Ele checa se existe um objeto especifico entre x1,y1 e x2,y2. Em relação à linha, essa já não sei como fazer... Mas vou pensar aqui.

2 - Esse método que você está usando é para trocar de sprites, certo? Lamento informar, mas seu método é totalmente ineficaz e só causa bugs e dor de cabeça. Recomendo que você crie apenas um único objeto para o jogador e programe a troca de sprites/movimentos baseado em condições. Leia esse meu artigo para melhor entendimento.

3 - Você vai precisar de duas variaveis:
DirectionAlvo
Direction

DirectionAlvo é o valor do point_direction.
Direction é a direção em que a arma está apontada (ou seja, image_angle(Direction)). Tudo o que tem que fazer é mandar que direction seja alterada relativamente com DirectionAlvo, ou seja, se o valor for maior ou menor, aos poucos, vai igualando até ficar com o mesmo valor.

4 - Supondo que tenha conseguido fazer o sistema da linha, basta checar se o tamanho da linha está no tamanho mínimo para poder atirar.

5 - Não sei o que um TDS. '-' Top Down Shooter?

Off: Só pra eu entender... Essa linha, seria uma mira lazer?

___________


Engines, tutoriais e projetos? Clique no banner!



Atenção:
Comporte-se, senão você vai levar a cintada do Willy no meio da bunda! bravo


Willy

Ranking : Nota A
Número de Mensagens : 1812
Idade : 23
Data de inscrição : 08/06/2009
Notas recebidas : C + B + A + A
Reputação : 245
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

Re: Pacotão de duvidas

Mensagem por marcin_w_ em Sab 26 Abr 2014, 17:08

O meu objPlayer se move em 8 direções, cima, baixo, direita, esquerda e diagonais. Eu ainda não estou usando o método de "agachar, pular, rastejar", é apenas uma ideia, portanto o objPlayer continua sendo apenas um objeto msmo, preciso apenas saber como desabilitar as funções do player quando ele se transformar msmo que momentanemante no parent que ta "pulando, agachando etc"....

Sobre a linha não vai ser um laser não, na verdade ela nem será visível na versão final do jogo, eu apenas tive a ideia de usa-la para definir quando eh possivel acertar o alvo sem atingir nenhuma barreira e tbm pra reconhecer a distancia do atirador para a barreira....caso esteja mt perto ele não atira...pois nao faz sentido.

E sim TDS eh top down shooter, como ja descrevi me objPlayer creio que vc vai perceber que preciso de um sistema de definição de altura de objetos para reconhecer o tamanho da queda ao pular do objeto...e onde se delimita o chão.....oque eh bem dificil pois eh um tds....

marcin_w_

Número de Mensagens : 77
Idade : 26
Data de inscrição : 25/11/2012
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Pacotão de duvidas

Mensagem por Willy em Sab 26 Abr 2014, 17:18

Você não precisa trocar de objeto, apenas colocar condições nas ações dele.

Por exemplo:
Código:
if JogadorAbaixado == false{
   //Movimento Normal
}else{
   //Se abaixa
}

Quanto a linha, o collision_line bastará.
Já o pulo, se não me engano, tem uma engine que demonstra como fazer... Agora, onde está essa engine que é o problema. XD

___________


Engines, tutoriais e projetos? Clique no banner!



Atenção:
Comporte-se, senão você vai levar a cintada do Willy no meio da bunda! bravo


Willy

Ranking : Nota A
Número de Mensagens : 1812
Idade : 23
Data de inscrição : 08/06/2009
Notas recebidas : C + B + A + A
Reputação : 245
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://willy-gmbr.blogspot.com/

Voltar ao Topo Ir em baixo

Re: Pacotão de duvidas

Mensagem por polosam em Sab 26 Abr 2014, 17:20

Crie uma variável "objeto".
Quando ele for o player normal, essa variável será 1, fazendo com que as funções do player dependam desse valor=1. Para quando ele pular, deixe essa variável com outro valor: vai ser o mesmo que ter vários objetos num só.

polosam

Número de Mensagens : 424
Idade : 24
Data de inscrição : 20/12/2010
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Pacotão de duvidas

Mensagem por Mr. Kaleb em Sab 26 Abr 2014, 17:29

Quanto ao pulo, é só definir uma variável falsa, tipo z. Então você define todas as ações que ocorrem em planos diferentes.
Por exemplo, vamos dizer que você tem o chão (global.z = 0). Então tem uma caixa (global.z = 32), onde você pode subir e os zumbis ou o que quer que seja, não te atacam. 
A lógica seria a seguinte:
Código:
if !global.z>0 { //se a altura não for maior que zero
  //zumbis podem te atacar
}

Mr. Kaleb

Ranking : Nota C
Número de Mensagens : 1400
Idade : 19
Data de inscrição : 07/09/2010
Notas recebidas : C
Reputação : 21
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Pacotão de duvidas

Mensagem por saim em Dom 27 Abr 2014, 21:15

marcin_w_ escreveu:Tenho algumas dúvidas e decidi postar todas num só tópico afinal trata-se do mesmo projeto.

Meu projeto é um TDS shooter, trabalho nele a 3 anos, o desenvolvimento entrou em uma fase crucial na transformação dele em um jogo viciante ou apenas algo que poderia ter dado certo.

O problemas que enfrento acredito ser de nivel principiante/mediano portanto não muitos de vcs terão facilidade em me esclarecer.

1 - Tenho uma arma que se move em 360 direções, minha vontade sempre foi de que caso o objeto_alvo estivesse obstruído por algum outro objeto ...que a arma não atirasse apenas apontasse. Decidi então usar uma função que desenha uma linha entre a arma e o alvo (draw_line_color(x, y, objPlayer.x, objPlayer.y, c_red, c_red);) e coloquei essa função no draw da arma........porém agora meu problema eh saber como fazer para essa linha quando em colisão com algum objeto que esteja entre a arma e o alvo pare de chegar até o alvo. e pior que isso....fazer com que o objetoARMA reconheça que essa linha não chegou no objPlayer e assim pare de atirar com uma variavel por exemplo podeatirar=0


2- Gostaria tbm de saber como desabilitar as funções de objetos parents......por exemplo eu tenho o objPlayer....e criei um parent pra ele que é o objPlayer agachado.....porém gostaria que agachado ele não atirasse......quero saber como fazer para o objeto ser apenas reconhecido como parent mas que nao tenha as funções do objeto parent.....pra ser mais claro....quero que varios objetos diferentes  "agachado,pulando, rastejando" tenham funções difrentes...mas sejam reconhecidos como parents do obj Player.....pois no resultado serão o "msmo objeto"

3- Voltando a arma 360 , gostaria de saber como fazer para que ela aponte para o player (isso eu ja sei fazer) porém...com um delay....tipo...segue ele mas não imediata e precisamente como ja fiz...quero q exista um delay...ou ateh um erro de alvo.

4 -Voltando tbm as lines, como fazer para que dependendo do tamanho da linha desenhada pelo draw o objeto tenha uma atitude diferente....por exemplo....se a linha entre ele e o objeto que obstrui estiver mt pequena....ele nem atira msmo...pq estará perto de uma parede ou algo do tp....e nao faria sentido atirar..........

5- como fazer um pulo TDS?...tipo criar objetos que definam que ali o objeto está mais alto...e q quando chegar na beirada vai cair?....tp...subir em uma caixa...essa eu sei q vai ser mais dificil..mas se algm tiver uma ideia da uma luz...

Bom...por enquanto é isso, abraço pessoal.
É osso postar sem ler as respostas do Willy, mas ainda tenho 8 janelas de assuntos interessantes e pretendo trabalhar no meu projeto e... enfim, vamos lá!
1 - collision_line. isso, eu vi que o Willy explicou.
2 - não use parents, use a máquina de estados finitos com um único objeto. Tutorial na assinatura. Sério, estou falando com pressa, mas também com conhecimento de causa, ela muda sua vida!
3 - tem um script mágico que te retorna a diferença entre uma direção e outra. Use o sinal dessa diferença pra "rodar" sua direção, ao invés de defini-la.
4 - mole. point_distance pra saber a distância, um if-else pra reduzir essa distância a patamares conhecidos e switch pra definir o que fazer em cada patamar. Acho que deu pra sacar, se não deu, mande MP.
5 - Procure tutoriais a respeito de jogos isométricos, parece ser a mesma coisa que você quer. Um objeto-sombra fica numa altura fixa, o outro fica no ar. A sombra pode subir e descer pelo piso isométrico. O outro fica numa altura, sempre relativa à sombra. Se a sombra muda de altura, a relação de altura não muda, mas se a sombra "cai" de algum lugar, a relação muda do tanto que a sombra caiu.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: Pacotão de duvidas

Mensagem por marcin_w_ em Ter 29 Abr 2014, 20:46

Saim, vc chegou exatamente no ponto que eu precisava, a tal maquina de estados finitos realmente é oq está faltando pra eu conseguir levar meu projeto em frente, gostaria de sber se tem alguma forma de mantermos contato para que vc possa me ajudar com a maquina de estados finitos no meu projeto tendo assim o seu nome nos créditos em destaque. sepuder....passa o face...eu te add....e a gente vai tratando desse assunto por la

marcin_w_

Número de Mensagens : 77
Idade : 26
Data de inscrição : 25/11/2012
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Pacotão de duvidas

Mensagem por Conteúdo patrocinado Hoje à(s) 00:21


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