[TUTO]Será que está muito longe?

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

Qualidade [TUTO]Será que está muito longe?

Mensagem por Hatzo enkiri em Sab 04 Set 2010, 19:31

Nível:Iniciante/Intermediário
Plataforma:Eu não sei mas o meu Game Maker é o 8

Distância customizada

Olá pessoal!
Hoje eu vou ensinar a achar a distância entre dois objetos.

Muitas vezes nós programadores de gml precisamos achar a distância entre dois objetos.
Para isso existem dois jeitos:
O primeiro ,que é mais fácil, criado por nosso ídolo:Mark o criador do Game Maker ;
E o segundo que é customizado criado por mim!!

Mas como eu faço isso? Tem que ser um grande programador para isso ,não?
Tem que saber milhares de códigos,não?


Bom não é tão difícil só tem que saber um pouco de matemática e um pouco de Comandos do GM.
Bom,Primeiramente tenho que explicar duas coisas:

1-Função
Uma função é um script que retorna valores isso é muito bom pois assim nós podemos fazer nossos próprios códigos como o move_towards_point().

2.Como vai ser o código
Isso é uma coisa que você vai ver só no Ensino Médio ou talvez já tenha visto isso.
A fórmula é bem grandinha,e ela pode ser explicada pelo grande Pitágoras!
Tá aí o código:

Código:
var d,x1,x2,y1,y2;

if instance_exists(argument0)
{x1=x
x2=argument0.x
y1=y
y2=argument0.y

d=floor(power(sqr(x1-x2)+sqr(y1-y2),1/2))}

return d;

Ponha esse código num script.E quando quiser usá-lo então ponha
Código:
nome_do script(Nome_do objeto)

Vamos supor que você queira testar a distância entre o objeto_alpha e o objeto_beta(no obejto_alpha)
e se ela for maior que 100 então a instância do alpha é destruída e o nome que eu dei para o script é distanciao .O código será então:

Código:
if distanciao(objeto_beta)>100
{instance_destroy()}

Para desenhar o valor da distancia é necessário que você salve o valor numa variável primeiro.
Usando o mesmo exemplo(o script continua com o nome de distanciao)
No evento create:
Código:
d_d=0

No evento STEP:
Código:
d_d=distancia(objeto_beta)

No evento DRAW
Código:
{draw_text(x_que_vc_quer,y_que_vc_quer,string(d_d))}

Por último eu vou explicar o código:
Código:
var d,x1,x2,y1,y2;//declarei as variáveis que serão utilizadas no script
Código:
if instance_exists(argument0)//checa se existe uma instância do outro objeto
{x1=x//var x1 igual ao x do objeto em que vc pos o código
x2=argument0.x//var x2 igual ao x do outro objeto em que você quer achar a distância
y1=y//var y1 igual ao y do objeto em que vc pos o código
y2=argument0.y//var y2 igual ao y do outro objeto em que você quer achar a distância
Código:
d=floor(power(sqr(x1-x2)+sqr(y1-y2),1/2))}//acha a distância graças ao principio matemático
Código:

return d;//retorna o valor da distância por isso o script é uma função
Observações:
**A função do criador do game maker correspondente é
Código:
distance_to_object(nome do objeto)

**Eu só testei com apenas uma instância de cada objeto.

**Não me ache louco por fazer isso em modo custom.


Qualquer ou outra coisa que queira acrescentar,por favor fale aqui no tópico.
E comentem.


Última edição por Janx em Sab 18 Set 2010, 09:36, editado 2 vez(es) (Razão : Adequar as regras)

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

Qualidade Re: [TUTO]Será que está muito longe?

Mensagem por vitor_liminha123 em Sab 04 Set 2010, 19:33

O.O
Não entendi nadinha.
Sad (sou burro)

vitor_liminha123

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

http://www.newgrounds.com/tanber

Voltar ao Topo Ir em baixo

Qualidade Re: [TUTO]Será que está muito longe?

Mensagem por Hatzo enkiri em Sab 04 Set 2010, 19:45

O que não entendeu?

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

Qualidade Re: [TUTO]Será que está muito longe?

Mensagem por Hedgehog em Sab 04 Set 2010, 19:57

Calma vitor! Burro não, novato, diz ai o q vc não entendeu q agente explica!

Hedgehog

Número de Mensagens : 384
Idade : 20
Data de inscrição : 28/08/2008
Reputação : -2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.recursos-mania.forumeiros.com/

Voltar ao Topo Ir em baixo

Qualidade Re: [TUTO]Será que está muito longe?

Mensagem por Hatzo enkiri em Sab 04 Set 2010, 20:07

Hedgehog vc entendeu tudo?
Vitor o Hedgehog está certo ainda há muito o que aprender.
Uma dica que eute dou é dar uma olhada nas aulas e procurar apostilas de lógica de Programação;
Eu era pior que burro quando comecei por isso desisti durante um tempo do GM.
Daí eu comecei um curso de técnico em Informática e agora fica mais fácil entender o Game Maker.
Espero que tenha pegado a dica.

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

Qualidade Re: [TUTO]Será que está muito longe?

Mensagem por Hedgehog em Sab 04 Set 2010, 20:10

Não entendi no total, mas as funções e o motivo de elas estarem lá, tais como as variáveis, sim.

Vitor, pra vc que é novato, teria resultados parecidos assim

Crie um obj_controle

CREATE

Código:
distancia=0

no STEP

Código:
x=player.x
y=player.y

Código:
distancia=distance_to_object(objeto que vc quer medir a distancia)

DRAW

Na aba control, acho, arrasta Draw variable

Código:
variable=distancia
x=16
y=16


Última edição por Hedgehog em Sab 04 Set 2010, 20:24, editado 1 vez(es)

Hedgehog

Número de Mensagens : 384
Idade : 20
Data de inscrição : 28/08/2008
Reputação : -2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.recursos-mania.forumeiros.com/

Voltar ao Topo Ir em baixo

Qualidade Re: [TUTO]Será que está muito longe?

Mensagem por Hatzo enkiri em Sab 04 Set 2010, 20:24

As funções power é uma função matemática que tem a sintaxe(como é fgeita a função):

Código:
power(num,num2)

Daí ele faz num elevado a num2
Para tirar a raiz quadrada você tem elevar o número a uma fração (1/2).
o floor arredonda um número real para um inteiro menor.Por exemplo:

Código:
floor(7.2)

isso retorna 7
E o sqr eleva um número ao quadrado.
Exemplo:

Código:
sqr(4)
Isso retorna 16.
Outra coisa a formula matemática é uma coisa que você aprende em geometria na escola.Eu estou no segundo colegial aprendi isso na semana passada

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

Qualidade Re: [TUTO]Será que está muito longe?

Mensagem por Luan Maia em Sab 04 Set 2010, 22:33

Acho que entendi o tutorial, mesmo estando no 9º ano (8ª Série) me lembro de já ter aprendido estas operações matemáticas, como o Teorema (acho que é isso) de Pitágoras, não me lembro quando, mas eu já aprendi isso sim. Mas enfim, ótimo tutorial, isso é muito importante dependendo do jogo em que você pretende fazer, mesmo tendo o "distance_to_object". xD
flw

Luan Maia

Ranking : Sem avaliações
Número de Mensagens : 399
Idade : 20
Data de inscrição : 01/07/2010
Notas recebidas : D+C+C+D
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://blogluanmaia.blogspot.com.br/

Voltar ao Topo Ir em baixo

Qualidade Re: [TUTO]Será que está muito longe?

Mensagem por Conteúdo patrocinado Hoje à(s) 09:40


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