[Duvida] limitando a area do obj

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

[Duvida] limitando a area do obj

Mensagem por Gonzo 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)

Gonzo

Número de Mensagens : 927
Data de inscrição : 29/05/2012
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Duvida] limitando a area do obj

Mensagem por theguitarmester 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.

theguitarmester

Ranking : Sem avaliações
Número de Mensagens : 1908
Idade : 21
Data de inscrição : 28/02/2012
Notas recebidas : B
Reputação : 80
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Prêmios
   : 2
   : 2
   : 1

http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Voltar ao Topo Ir em baixo

Re: [Duvida] limitando a area do obj

Mensagem por Gonzo 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

Gonzo

Número de Mensagens : 927
Data de inscrição : 29/05/2012
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Duvida] limitando a area do obj

Mensagem por SIGILOSO 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

SIGILOSO

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

Voltar ao Topo Ir em baixo

Re: [Duvida] limitando a area do obj

Mensagem por PedroX 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!

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

Mensagem por saim 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.

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

Mensagem por Gonzo 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

Gonzo

Número de Mensagens : 927
Data de inscrição : 29/05/2012
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Duvida] limitando a area do obj

Mensagem por saim 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

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

Mensagem por Gonzo 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

Gonzo

Número de Mensagens : 927
Data de inscrição : 29/05/2012
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [Duvida] limitando a area do obj

Mensagem por Conteúdo patrocinado Hoje à(s) 16:38


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