Conectar-se
Quem está conectado
29 usuários online :: 6 usuários cadastrados, Nenhum Invisível e 23 Visitantes

dharrison, gart30, Katerp, PedroX, Tedi Ripper, Willy

Ver toda a lista


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

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Como manter uma distancia X+ de um objeto a outro.

em Seg 05 Dez 2011, 21:59
Aguem sabe uma forma de deixar sempre um objeto a uma distancia X ou + de outro objeto especifico ou de todos os objetos sólidos.

Estou com um projeto em que uso o move_towards_point() para mover varios objeto simultaneamente,porem,chega um ponto em que os objetos começam a "subir" um em cima do outro(ao se aproximar do destino x.y)

Oque eu gostaria de pedir é,um comando ou alguma forma de quando um objeto estiver a uma distancia X ou - do obj_exemplo que estiver + próximo,ele se mova na direção oposta do mesmo,mantendo asim sempre uma distancia X ou evitando que ao ser criado em cima de um outro objeto ele se mova para longe (distancia de alguns pixels,16,8,por ai).

dez de ja agradeço.
VLWS!!! Happy


avatar
Data de inscrição : 28/08/2010
Número de Mensagens : 599
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

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

Re: Como manter uma distancia X+ de um objeto a outro.

em Seg 05 Dez 2011, 23:21
rapaz, nao entendi muita coisa, mas tenta assim:
Código:

if (objeto.x < obj_exemplo)
{
move o objeto
}
o comando para mover o objeto só irá funcionar se ele estiver a uma determinada distancia do outro.
avatar
Data de inscrição : 29/04/2011
Número de Mensagens : 33
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: Como manter uma distancia X+ de um objeto a outro.

em Seg 05 Dez 2011, 23:52
o problema é o comando de movimento,como eu movo um objeto esatamente pro lado oposto de outro objeto sem usar move_towards_point() ou speed(hspeed,vspeed) e identificar qual é o obj_exemplo + próximo,pois serão varios de um mesmo objeto em 1 room =/


avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 30/07/2011
Número de Mensagens : 928
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 1
Ver perfil do usuáriohttp://luizpontes.tk/

Re: Como manter uma distancia X+ de um objeto a outro.

em Ter 06 Dez 2011, 00:00
O código do itarodrigo tá errado. O certo seria:
Código:
perto=instance_nearest(x,y,obj_exemplo)
if point_distance(x,y,perto.x,perto.y)>32
{move_towards_point(obj_exemplo.x,obj_exemplo.y,4)}
Eu acho.

OFF> Meia-noite! affraid Vou dormir! Flws!
avatar
Ranking : Nota B
Notas recebidas : D+B+B+C+A
Data de inscrição : 24/08/2009
Número de Mensagens : 1092
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

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

Re: Como manter uma distancia X+ de um objeto a outro.

em Ter 06 Dez 2011, 01:02
@luiz_eldorado escreveu:O código do itarodrigo tá errado. O certo seria:
Código:
perto=instance_nearest(x,y,obj_exemplo)
if point_distance(x,y,perto.x,perto.y)>32
{move_towards_point(obj_exemplo.x,obj_exemplo.y,4)}
Eu acho.

OFF> Meia-noite! affraid Vou dormir! Flws!

.Quase isso,desse jeito quando ele estiver longe ele vai começar a andar e o speed vai ser igual a 4,mas quando ele aproximar não vai executar o codigo para seguir ,mas o speed vai continuar sendo 4 e ele vai continuar andando em uma linha reta,você deve zerar o speed.
Código:
perto=instance_nearest(x,y,obj_exemplo)
if point_distance(x,y,perto.x,perto.y)>32
{move_towards_point(obj_exemplo.x,obj_exemplo.y,4)}
else
{speed=0}
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

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

Re: Como manter uma distancia X+ de um objeto a outro.

em Ter 06 Dez 2011, 09:13
Exatamente. Zerar a speed se a distância for menor (ou igual) à mínima.
Porque estou floodando assim?
Pra acrescentar que, se você resolvesse INVERTER a velocidade, como foi solicitado no post inicial, o objeto ficaria tremendo, oscilando, no perímetro do objeto a ser quase-atingido.
MAS, se você quiser isso mesmo, dá pra fazer em uma linha.
Código:
move_towards_point(objetivo.x, objetivo.y, 4 * sign(point_distance(x, y, objetivo.x, objetivo.y)<32)-0.5))
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