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

Cambalinho, Vikintor

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
Data de inscrição : 29/05/2012
Número de Mensagens : 929
Insígnias de JAM :

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

[Duvida] limitando a area do obj

em Qua 26 Dez 2012, 22:47
gente com esse code eu controlo um obj pelo mouse para os lados e para cima e para baixo, gostaria de um modo para limitar uma area horizontal e vertical para o obj controlado pelo mouse não ultrapassar sem usar colisão !
imaginem um 1ºretangulo do tamanho da tela com outro 2ºretangulo da metade do 1ºretangulo o obj controlado pelo mouse nao poderia ultrapassar 2ºretangulo Smile VLW

no create()
x1=mouse_x
y1=mouse_y

no step()
x1=mouse_x
y1=mouse_y
move_towards_point(x1,y1,distance_to_point(x1,y1)/20)
avatar
Ranking : Sem avaliações
Notas recebidas : B
Data de inscrição : 28/02/2012
Número de Mensagens : 1908
Insígnias de JAM :

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

Prêmios
   : 2
   : 2
   : 1
Ver perfil do usuáriohttp://guitarmester.no.comunidades.net/index.php?pagina=19362978

Re: [Duvida] limitando a area do obj

em Qua 26 Dez 2012, 23:24
algo Assim:
Código:
no step()
if mouse_x>room_width/2 x1=mouse_x
if mouse_y>room_width/2 y1=mouse_y
move_towards_point(x1,y1,distance_to_point(x1,y1)/20)
Não sei Por Exato o que quer, mas com isso você já deve ter uma idéia do que Fazer.
Data de inscrição : 29/05/2012
Número de Mensagens : 929
Insígnias de JAM :

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

Re: [Duvida] limitando a area do obj

em Qua 26 Dez 2012, 23:46
theguitarmester

vlw manow só que nem funcionou :/

vo explica de novo XD Smile

quero 'limitar' o obj controlado pelo mouse dentro de uma area ele nao pode ultrapassar essa area retangular Smile
avatar
Ranking : Nota A
Notas recebidas : A+A+A+A+A+A+A
Data de inscrição : 06/06/2009
Número de Mensagens : 2264
Insígnias de JAM :

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

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

Re: [Duvida] limitando a area do obj

em Qui 27 Dez 2012, 00:19
Se eu entendi bem, você quer que o objeto seja controlado pelo mouse, mas se passar de uma certa área, ele não se mova mais, correto?
Código:

if object.x>limite_da_esquerda and object.x<limite_da_direita
object.x=mouse_x
if object.x>limite_da_direita object.x=limite_da_direita
if object.x<limite_da_esquerda object.x=limite_da_esquerda
Acredito que vá funcionar, usei um código parecido no Berfecks-8 Smile
afro
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6036
Insígnias de JAM :

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

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

Re: [Duvida] limitando a area do obj

em Qui 27 Dez 2012, 00:27
x1 = median(x_minimo, x, x_maximo)
y1 = median(y_minimo, y, y_maximo)

Agora é só substituir os valores em negrito.

Até mais!
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: [Duvida] limitando a area do obj

em Qui 27 Dez 2012, 09:41
@PedroX escreveu:x1 = median(x_minimo, x, x_maximo)
y1 = median(y_minimo, y, y_maximo)
Era o que eu ia postar. "median" (mediana) te retorna o valor do meio entre os argumentos. Não é a média, é colocar tudo em ordem crescente e pegar o do meio. Não me pergunte o que acontece com um número par de argumentos. Eu sei que ainda um deles é retornado, mas não sei se é o do meio "pra baixo" ou do meio "pra cima".
Mas eu alteraria levemente o código:
x = median(x_minimo, mouse_x, x_maximo);
y = median(y_minimo, mouse_y, y_maximo);

O bacana dessa função é que ela faz o objeto atingir o limite mesmo se o mouse fugir muito rápido da caixa. Usar um "if" tem a desvantagem de que se isso acontecer, o objeto não fica no limite, fica na última posição registrada pelo game maker (que tem uma taxa de atualização bem menor que a do windows, segundo me disseram). Aí, pra tirar o mouse do limite e deixar o objeto lá, você teria que mover o mouse com cuidado.
Nenhum jogador quer ter que tomar cuidado pra programação funcionar.
Data de inscrição : 29/05/2012
Número de Mensagens : 929
Insígnias de JAM :

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

Re: [Duvida] limitando a area do obj

em Qui 27 Dez 2012, 11:09
VLW gente!

o code do PedroX matou a pau Smile

eu não tinha visto 'median' até hoje Smile

pra mim funcionou assim ..

Código:

x1 = median(mouse_x-VALOR,x, mouse_x+VALOR)
y1 = median(mouse_y-VALOR, y, mouse_y+VALOR)
VLW
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: [Duvida] limitando a area do obj

em Qui 27 Dez 2012, 11:49
Mina do Rock escreveu:pra mim funcionou assim ..

Código:

x1 = median(mouse_x-VALOR,x, mouse_x+VALOR)
y1 = median(mouse_y-VALOR, y, mouse_y+VALOR)
???
Sério que funcionou? É que com mouse_x estando em dois limites ao mesmo e com "x" se movendo em direção ao mouse... fiquei com a impressão que isso não vai te limitar nada.

Agora que eu vi que você quer se mover lentamente em direção a (X1, Y1). Eu tinha achado que você só queria seguir o mouse. Por isso aquela história de mexer o mouse rapidão.
Pra seguir o mouse numa velocidade = 1/20*distância, eu faria o que o PedroX fez, mesmo, só trocando os argumentos (x, y) por (mouse_x, mouse_y). Aí, você garante que (X1, Y1) estará dentro do retângulo. Como o objeto se moverá em direção ao ponto, não sairá do retângulo.

Na verdade, até pode sair, mas apenas alguns pixels. Pra garantir que nem uns pixels sejam ultrapassados, eu trocaria o move_towards point por toda uma nova matemática:
Código:
var dist, dire, velo, posX, posY;
dire = point_direction(x, y, mouse_x, mouse_y); //direção ao mouse
dist = point_distance(x, y, mouse_x, mouse_y); //distância ao mouse
velo = dist / 20; //velocidade
posX = x + lengthdir_x(velo, dire); //próxima posição sem considerar os limites
posY = y + lengthdir_y(velo, dire); //próxima posição sem considerar os limites
x = median(limite_inferior_x, posX, limite_superior_x); // agora considera os limites
y = median(limite_inferior_y, posY, limite_superior_y); // agora considera os limites
Data de inscrição : 29/05/2012
Número de Mensagens : 929
Insígnias de JAM :

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

Re: [Duvida] limitando a area do obj

em Qui 27 Dez 2012, 12:22
saim seu code fico muito fera cara Smile e ainda da pra regular a velocidade, to usando ele agora uhauahua fico perfeito XD

feliz2
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