Conectar-se
Quem está conectado
27 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 26 Visitantes

Rodrigo Santiago

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 20/01/2011
Número de Mensagens : 65
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Objeto definido [RESOLVIDO]

em Seg 03 Out 2011, 21:51
Sempre tive esse problema mas nunca consegui resolver... Alguém pode ajudar?

É o seguinte: Vou criar um jogo com vários inimigos iguais, mas não consigo fazer ele perder vida. Esse é o código que uso, e é muito simples: (gastly_selvagem é o inimigo)

Código:
if attack=true
{
if direction=180
{
if place_meeting(x-5,y,gastly_selvagem)
{
with(gastly_selvagem)
{
vida-=1
}
}
}

if direction=0
{
if place_meeting(x+5,y,gastly_selvagem)
{
with(gastly_selvagem)
{
vida-=1
}
}
}

if direction=90
{
if place_meeting(x,y-5,gastly_selvagem)
{
with(gastly_selvagem)
{
vida-=1
}
}
}

if direction=270
{
if place_meeting(x,y+5,gastly_selvagem)
{
with(gastly_selvagem)
{
vida-=1
}
}
}
}

A solução que arrangei foi essa, mas não deu certo: (vou postar apenas parte do código)

Código:
if direction=180
{
if place_meeting(x-5,y,gastly_selvagem)
{
inimigo=gastly_selvagem
with(inimigo)
{
vida-=1
}
}
}

O que faço para que apenas o inimigo que esteja na posição (x-5,y) perca vida?


Última edição por rafarubim em Ter 04 Out 2011, 13:09, editado 1 vez(es)
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 28/10/2008
Número de Mensagens : 820
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 29

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Objeto definido [RESOLVIDO]

em Seg 03 Out 2011, 22:00
Não seria mais fácil colocar um evento no inimigo e quando ele for atingido perder energia?
Mas neste caso, você esta definindo "todos" os objetos "gastly_selvagem" como inimigo, por isso que todos perdem energia.
Talvez isso possa ajudar.

......
if place_meeting(x-5,y,gastly_selvagem)
{
other.vida-=1;
}
.......
avatar
Data de inscrição : 13/10/2010
Número de Mensagens : 149
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 1

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Objeto definido [RESOLVIDO]

em Seg 03 Out 2011, 22:03
Código:
var i;
i=instance_postion(x-5,y,gastly_selvagem)
i.vida-=1
avatar
Data de inscrição : 20/01/2011
Número de Mensagens : 65
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Objeto definido [RESOLVIDO]

em Seg 03 Out 2011, 22:39
CRP-Max escreveu:Não seria mais fácil colocar um evento no inimigo e quando ele for atingido perder energia?
Mas neste caso, você esta definindo "todos" os objetos "gastly_selvagem" como inimigo, por isso que todos perdem energia.
Talvez isso possa ajudar.

......
if place_meeting(x-5,y,gastly_selvagem)
{
other.vida-=1;
}
.......
Na verdade não é um evento de colisão, mas quero que ele perca vida se estiver em determinada posição.
@ Tiago> Não deu certo, por um momento achei que ia dar Sad
@EDIT> Eu usei assim:

Código:
if direction=180
{
if place_meeting(x-5,y,gastly_selvagem)
{
inimigo=instance_position(x-5,y,gastly_selvagem)
with(inimigo)
{
vida-=1
}
}
}
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 28/10/2008
Número de Mensagens : 820
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 29

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Objeto definido [RESOLVIDO]

em Seg 03 Out 2011, 22:44
rafarubim escreveu:
Na verdade não é um evento de colisão, mas quero que ele perca vida se estiver em determinada posição.
@ Tiago> Não deu certo, por um momento achei que ia dar Sad
@EDIT> Eu usei assim:

Código:
if direction=180
{
if place_meeting(x-5,y,gastly_selvagem)
{
inimigo=instance_position(x-5,y,gastly_selvagem)
with(inimigo)
{
vida-=1
}
}
}
Você já tentou mudar as linhas no seu código da forma que eu mostrei?
Código:
if direction=180
{
if place_meeting(x-5,y,gastly_selvagem)
{
other.vida-=1
}
}
avatar
Data de inscrição : 20/01/2011
Número de Mensagens : 65
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Objeto definido [RESOLVIDO]

em Seg 03 Out 2011, 22:48
Não adianta colocar other porque esse codigo ta no step, e não colisão, fora que vida é uma variável que eu crieientão não pode colocar other.vida.
Sad

EDIT:
O que eu quero saber é simplismente qual função eu uso para minha variável.
exemplo, se eu coloco:

ASSIM DARIA CERTO:
var objeto_que_quero;
objeto_que_quero=INSTANCE_CREATE(x+10,y,objeto_tal)
with(objeto_que_quero)
{
vida-=1
}

ASSIM NÃO DARIA CERTO:
var objeto_que_quero;
objeto_que_quero=PLACE_MEETING(x+10,y,objeto_tal)
with(objeto_que_quero)
{
vida-=1
}

Qual função uso já que place_meeting e instance_position não deram certo?
avatar
Ranking : Nota C
Notas recebidas : D + D + C + C + D + B
Data de inscrição : 28/04/2011
Número de Mensagens : 913
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 41

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuáriohttp://mrbrumgames.blogspot.com/

Re: Objeto definido [RESOLVIDO]

em Ter 04 Out 2011, 02:29
Código:
if objeto_tal.x-objeto_que_quero.x==10 objeto_que_quero.vida-=1
De acordo com o código acima, seria isso ^
avatar
Ranking : Nota C
Notas recebidas : D-B-C
Data de inscrição : 08/09/2010
Número de Mensagens : 914
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 5

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://luizgm.blogspot.com/

Re: Objeto definido [RESOLVIDO]

em Ter 04 Out 2011, 08:03
Simple and Easy!
Código:
i=instance_nearest(x,y,obj_inimigo)
if place_meeting(x,y,i)
{
i.vida-=1
}
Adapte isso ao seu código.
ATÉ+
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 121

Prêmios
   : 1
   : 0
   : 3
Ver perfil do usuário

Re: Objeto definido [RESOLVIDO]

em Ter 04 Out 2011, 11:31
O que você quer é simular um evento de colisão no step.
Seu problema é que você está usando um "with" e incluindo o objeto, não a instância do objeto.
Você precisa, dentro do step, dar um jeito de descobrir a intância do objeto e aplicar o código naquela instância.
Existem funções que te retornam a id da instância. instance_place é uma delas. O Alex FC tem um tutorial sobre essas funções, vou dar uma procurada e dou edit. Até lá, o código do luiz_100juizo deve funcionar (você só vai precisar alterar o valor de x, pra ser adaptado ao seu código).

PS: Isso não vai te ajudar por enquanto, mas "other" não é usado só em eventos de colisão.

Edit: Me enganei. O tutorial que eu estava lembrando é do Pedro Henrique (o Alex FC também tem alguns tutoriais de colisão, mas não vi as funções que você procura). Ele está aqui
avatar
Data de inscrição : 20/01/2011
Número de Mensagens : 65
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Objeto definido [RESOLVIDO]

em Ter 04 Out 2011, 13:08
Obg pessoal, já descobri: eu usei tanto a instance_nearest quanto a instance_placement Smile
ficou assim:

if direction=180
{
if place_meeting(x-5,y,gastly_selvagem)
{
var inimigo;
inimigo=instance_place(x-5,y,gastly_selvagem)
with(inimigo)
vida-=1
}
}
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 121

Prêmios
   : 1
   : 0
   : 3
Ver perfil do usuário

Re: Objeto definido [RESOLVIDO]

em Ter 04 Out 2011, 13:57
sugiro mudar um pouco, acho que desse jeito fica mais eficiente:
if direction=180
{
var inimigo;
inimigo=instance_place(x-5,y,gastly_selvagem)
if inimigo!=noone{
with(inimigo)
vida-=1
}
}
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum