[ajuda]inimigos iguais com ações diferentes

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

[ajuda]inimigos iguais com ações diferentes

Mensagem por KevinBandicoot em Sex 13 Jan 2012, 19:19

Boa Tarde Pessoal,

Estou desenvolvendo um sistema, mas "encascatei" com algo que estou tentando resolver a algum tempo.
Esse sistema irá compor um jogo. Ele consiste em criar inimigos randômicos a partir de um único objeto. Até aí tudo bem. Porém, necessito que quando o mouse está em cima de um inimigo qualquer e determinada tecla é pressionada, ele execute uma ação, e assim consecutivamente com os outros.
Arrumei algumas soluções, todas elas usando o id de cada instância criada. Eu capturo o id quando passo o mouse por cima e o armazeno em uma variável, nessa variável eu configuro as ações e tudo mais...
O objetivo é que cada inimigo execute a sua ação independente dos outros.
Ex: Se eu mando um parar por 10 segundos, os outros continuam andando. Se eu mandar outro parar por 10 segundos, o primeiro continua a andar depois dos seus 10 segundos...
Sempre quando penso que vai dar certo, eu acabo me confundindo em algo...
Espero que tenham me entendido e possam me ajudar^^

KevinBandicoot

Número de Mensagens : 186
Idade : 22
Data de inscrição : 18/12/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://kevinhpsantos.deviantart.com

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por Black Studio em Sex 13 Jan 2012, 19:47

Boa tarde.

Pelo que eu entendi voce pode fazer o seguinte :

Criar e programar uma lista com todas as ações e depois da room, voce Clica com o botão direito+CTRL no inimigo, e coloca um código só para aquele inimigo, indicando a ação e ser usada, por exemplo :

Código:
acao=4

E dai voce pode tambem depois quando quiser para colocar, Objeto com a ID ***** executar acao=****

Entendeu?

Black Studio

Ranking : Nota C
Número de Mensagens : 337
Idade : 18
Data de inscrição : 19/10/2011
Notas recebidas : C + C
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por KevinBandicoot em Sex 13 Jan 2012, 19:52

Na verdade os inimigos são criados randomicamente. Eu queria que quando passasse o mouse por cima de um deles e apertasse uma determinada tecla, de acordo com o seu id executasse uma ação somente nesse.
As ações também não podem interferir nas dos outros inimigos.
Obrigado por tentar ajudar^^

KevinBandicoot

Número de Mensagens : 186
Idade : 22
Data de inscrição : 18/12/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://kevinhpsantos.deviantart.com

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por GameMakerTutoriais em Sex 13 Jan 2012, 23:10

Tenta usar o evento Mouse Enter. Quando o mouse passar por sobre o objeto e a tecla estiver pressionada, você guarda o id dele em uma variável global, ou então executa a ação direto por ali mesmo.

Por exemplo, no evento Mouse Enter:

Código:
if keyboard_check(tecla) global.quem = id else global.quem = noone;

Quando quiser que esse objeto faça alguma coisa, você pode tentar usar um with:

Código:
with (global.quem)
{
// Ações!
}


GameMakerTutoriais

Número de Mensagens : 800
Data de inscrição : 29/01/2011
Reputação : 26
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por saim em Sab 14 Jan 2012, 11:17

Quando quero fazer esse tipo de coisa, evito usar o mouse_enter, porque ele só funciona se o mouse se mexer. Se o inimigo estiver se movimentando em direção ao mouse e o mouse estiver parado, o evento não acontece.
Pra contornar o problema, eu coloco no inimigo:
Código:
if (instance_position(mouse_x, mouse_y, id) == id){
//o mouse está sobre o inimigo
}

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: [ajuda]inimigos iguais com ações diferentes

Mensagem por Mundo Game Maker em Sab 14 Jan 2012, 11:41

Não é mais facil fazer 2 inimigos de mesmo sprite, mas com ação diferente?se não consegue é facil, cria 2 objetos, um com o nome obj_inimigo1 e o outro obj_inimigo2, ai você faz que cada um faça uma coisa diferente.

Mundo Game Maker

Número de Mensagens : 149
Idade : 23
Data de inscrição : 09/01/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por KevinBandicoot em Sab 14 Jan 2012, 13:05

Ninja8086, sim, estava usando o mouse_enter e o with também, mas estava dando esse problema que o saim falou. De qualquer modo, essa de noone no else eu nunca usei, eu estava "zerando" a variável global depois. Ajudará um pouco. Tenho uma dúvida. Se várias ações irão ocorrer ao mesmo tempo, teria que ser mais de uma variável para salvar o id?
Pensei em algo assim:
capturo o id do primeira instância e salvo por exemplo na global.a
capturo o id do segunda instância e salvo por exemplo na global.b
e assim vai até um número suficiente
digamos que sejam 5 variáveis (a,b,c,d,e), a primeira variável de acordo com um alarm zerará em 10 segundos, dae ela poderá ser usada por outra instância...
Será que algo assim permite que as ações ocorram ao mesmo tempo sem interferir em nenhuma instância?

saim, boa idéia, tentarei substituir por algo similar e depois reporto se deu certo.

Mundo Game Maker, na verdade serão várias ações, dae seria inviável criar vários objetos inimigos, sendo que uma hora ou outra esse número iria crescer, teria que ficar substituindo objetos, sem contar que iria colaborar para o peso do jogo. Preciso de algo mais automático possível.

Obrigado a todos




KevinBandicoot

Número de Mensagens : 186
Idade : 22
Data de inscrição : 18/12/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://kevinhpsantos.deviantart.com

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por Hatzo enkiri em Sab 14 Jan 2012, 13:43

Tente usar o que o Saim Falou só que desse jeito:
Código:
inidx=instance_position(mouse_x,mouse_y,objinimigo);//ao invés de
//objinimigo use o nome do objeto inimigo
if inidx!=noone
  {with(inidx)
        {//comandos}
    }
Assim ele armazena numa var o valor da instancia do objeto objinimigo que está na posição do mouse.
Se for diferente desse objeto especial noone então ele faz o que tu queres;

Hatzo enkiri

Ranking : Nota B
Número de Mensagens : 226
Idade : 22
Data de inscrição : 19/02/2009
Notas recebidas : B
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por Thyago em Sab 14 Jan 2012, 13:47

.Se form muitos objetos,ao inves de usar varias variaveis use uma array.

obj[1]
obj[2]

e por ai vai;

Thyago

Ranking : Nota B
Número de Mensagens : 1092
Idade : 30
Data de inscrição : 24/08/2009
Notas recebidas : D+B+B+C+A
Reputação : 31
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 1
   :

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por KevinBandicoot em Sab 14 Jan 2012, 19:12

Será que alguém não poderia fazer um exemplo básico de como seria? Estou tentando fazer aqui, mas não estou conseguindo (talvez esteja me confundindo com minhas próprias variáveis).
Assim seria mais fácil do que postar todo o meu source pra revisar...

Obrigado

KevinBandicoot

Número de Mensagens : 186
Idade : 22
Data de inscrição : 18/12/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://kevinhpsantos.deviantart.com

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por PedroX em Sab 14 Jan 2012, 19:32

Basta colocar no evento step do objeto:
Código:
if position_meeting(mouse_x, mouse_y, self)
if keyboard_check_pressed(tecla)
{
acao
}

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por KevinBandicoot em Sab 14 Jan 2012, 19:42

Pedro, sim, mas me confundo na parte que devo pegar o id do inimigo e passá-lo numa variável. De forma que a ação continue sendo executada caso o valor dessa variável mude.

KevinBandicoot

Número de Mensagens : 186
Idade : 22
Data de inscrição : 18/12/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://kevinhpsantos.deviantart.com

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por KevinBandicoot em Sab 14 Jan 2012, 19:53

Uma screen básica do problema:
Spoiler:


Última edição por KevinBandicoot em Sab 14 Jan 2012, 20:19, editado 1 vez(es)

KevinBandicoot

Número de Mensagens : 186
Idade : 22
Data de inscrição : 18/12/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://kevinhpsantos.deviantart.com

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por William Lima em Sab 14 Jan 2012, 20:00

Faz uma variavel local o objeto que permita mudar a ação apenas se ela estiver em tal valor... por exemplo

cria a variavel:
Código:
acao=0

Código:
if mouse_button_check_pressed(vk_left)//por exemplo
{acao=random(4)}

ai voce coloca...
Código:
if acao=1{codigo da acao1}
if acao=2{codigo da acao2}
if acao=3{codigo da acao3}
if acao=4{codigo da acao4}


William Lima

Ranking : Nota A
Número de Mensagens : 426
Idade : 22
Data de inscrição : 10/09/2010
Notas recebidas : C+A+A+B+A
Reputação : 10
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 2
   : 0

http://williammustaffa.blogspot.com

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por KevinBandicoot em Sab 14 Jan 2012, 20:07

certo, até aí tudo bem, mas e para dizer que a ação é da instância x sem que interfira na instância y? Como está na screen acima.

KevinBandicoot

Número de Mensagens : 186
Idade : 22
Data de inscrição : 18/12/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://kevinhpsantos.deviantart.com

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por William Lima em Sab 14 Jan 2012, 20:11

Como a variavel é local... nao irá interferir... ocorrerá apenas naquele objeto.

William Lima

Ranking : Nota A
Número de Mensagens : 426
Idade : 22
Data de inscrição : 10/09/2010
Notas recebidas : C+A+A+B+A
Reputação : 10
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 2
   : 0

http://williammustaffa.blogspot.com

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por KevinBandicoot em Sab 14 Jan 2012, 20:16

Sim, mas por exemplo:
Digamos que eu apertei enter em uns dos inimigos. A variável ação fica com valor 4, e de acordo if valor = 4, o inimigo para de andar por 10 segundos. Até aí tudo bem, mas se nesses 10 segundos que o inimigo estiver parado eu apertar enter em outro inimigo (quando falo inimigo, é o mesmo objeto), a variável local muda para outro número. Agora uma dúvida, mesmo sendo uma variável local, por ser uma instância do mesmo objeto, o valor não vale para todos?
Dependendo da sua resposta, acho que resolvi o meu problema XD

KevinBandicoot

Número de Mensagens : 186
Idade : 22
Data de inscrição : 18/12/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://kevinhpsantos.deviantart.com

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por William Lima em Sab 14 Jan 2012, 20:21

cria uma variavel que define se o mouse ta em cima ou não :

Código:
if mouse_x>x-16 && mousex<x+16 && mouse_y>y-16 && mouse_y<y+16//dependendo do tamanho da sprite
{tadentro=true}
else
{tadentro=false}

e ai coloca :
Código:
if tadentro=true && keyboard_check_pressed(vk_enter){acao=random(4)}

EDIT:
Engine---
http://dl.dropbox.com/u/40305167/engine.gmk
EDIT2:
http://dl.dropbox.com/u/40305167/enginenova.gmk
essa ta certa


Última edição por williammustaffa em Sab 14 Jan 2012, 21:31, editado 3 vez(es)

William Lima

Ranking : Nota A
Número de Mensagens : 426
Idade : 22
Data de inscrição : 10/09/2010
Notas recebidas : C+A+A+B+A
Reputação : 10
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 2
   : 0

http://williammustaffa.blogspot.com

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por Mr.Brum em Sab 14 Jan 2012, 20:25

aí parceiro, não sei se é isso que vc quer, mas fiz uma engine pra te ajudar:
no help tá tudo bem explicado,basta dar o f1.
http://dl.dropbox.com/u/43446077/JOGOS/engines/engine%20parar%20um%20objeto%20por%20id%20com%20mouse%20sobre%20ele.gmk

Mr.Brum

Ranking : Nota C
Número de Mensagens : 913
Idade : 25
Data de inscrição : 28/04/2011
Notas recebidas : D + D + C + C + D + B
Reputação : 41
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://mrbrumgames.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por KevinBandicoot em Sab 14 Jan 2012, 20:37

willian, Deu certo, porém caiu naquele problema que o saim citou lá na primeira página. Só funciona quando o enter está pressionado em cima do objeto.

mrbrum, Sim é isso mesmo, mas o problema é, eu paro um, depois paro outro... Ao mesmo tempo. Se eu clicar em 1 e depois clicar em outro, o 1 deve continua parado até acabar o seu tempo.

KevinBandicoot

Número de Mensagens : 186
Idade : 22
Data de inscrição : 18/12/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://kevinhpsantos.deviantart.com

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por PedroX em Sab 14 Jan 2012, 20:40

É o seguinte. Num tutorial que eu fiz, está explicado que um objeto é uma forma (ou molde) e as instâncias são os bolos, ou seja, se você colocou uma variável local no objeto, cada instância terá a sua própria. É como um defeito na forma de um bolo, todos os bolos sairão com defeitos iguais, mas cada um pode ser corrigido (mudado).

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por Mr.Brum em Sab 14 Jan 2012, 20:44

certo,
Modifiquei a engine, axo que se adequa ao que vc pediu,
ao clicar, a bola para por 10segundos, independente das outras:
ENGINE SELECT INSTANCIA

Mr.Brum

Ranking : Nota C
Número de Mensagens : 913
Idade : 25
Data de inscrição : 28/04/2011
Notas recebidas : D + D + C + C + D + B
Reputação : 41
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

http://mrbrumgames.blogspot.com/

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por KevinBandicoot em Sab 14 Jan 2012, 20:44

Muito Obrigado, Pedro, é incrível. Quando pensamos melhor sobre o problema, a solução depois aparece como algo banal e simples rs.
Tópico Resolvido.
Obs: Devo colocar os créditos na receita do bolo?

EDIT: Na verdade era só trocar minhas variáveis globais por locais. Era simples, porém procurei algo que complicou ainda mais.

Obrigado a todos pela ajuda. Aprendi algumas coisas novas com isso.

KevinBandicoot

Número de Mensagens : 186
Idade : 22
Data de inscrição : 18/12/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://kevinhpsantos.deviantart.com

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por PedroX em Sab 14 Jan 2012, 21:40

Não precisa de créditos.
Nada que faço peço créditos.

Tópico trancado.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [ajuda]inimigos iguais com ações diferentes

Mensagem por Conteúdo patrocinado Hoje à(s) 12:43


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