Estatísticas | Total Online: 1 Visitantes: 1 Usuários: 0 |
|
Esse código serve para calcular a distância entre o player e o inimigo mais próximo!
Pergunta: Mas não é só usar P2Dist X ou P2BodyDist X? Resposta: Primeiramente, isso calculária a distância X do player apenas com relação ao P2, e se for uma luta Coop? Pergunta: Então, eu posso fazer assim (EnemyNear,Pos X) - Pos X? Resposta: Com isso você irá calcular apenas a distância X! Pergunta: Mas o que a Distância Real então? Bom, eu vou tentar explicar mais ou menos como funciona. Vamos supor que temos 2 players E temos também suas distâncias X e Y Mas essas distâncias nem sempre são a verdadeira distância entre um corpo e outro, pois a distância entre um corpo e outro é sempre uma linha reta! Então a Verdadeira distância seria Temos então um triângulo retângulo onde a hipotenusa é a distância real e os catetos são as distâncias X e Y! Como diz o Teorema de Pitágoras: Quote Em qualquer triângulo retângulo, o quadrado do comprimento da hipotenusa é igual à soma dos quadrados dos comprimentos dos catetos. Resumindo: Distância² = Dist X² + Dist Y² Pergunta: E como vamos escrever isso no MUGEN? Primeiramente, vamos armazenar a distância X e Y entre o Player e o inimigo mais próximo em variáveis: Quote [State -3, Distância X] Type = VarSet Trigger1 = 1 FV = 0 Value = ((EnemyNear,Pos X) - Pos X) [State -3, Distância Y] Type = VarSet Trigger1 = 1 FV = 1 Value = ((EnemyNear,Pos Y) - Pos Y) Pergunta: Mas por que você está usando "FV" ao invés de "V"? Resposta: V = Var, FV = FVar, as Vars armazenam apenas valores INTEIROS, enquanto as FVars armazenam valores quebrados, com casas decimais, tornando nosso cálculo muito mais preciso! Pergunta: Ok, nós armazenamos os valores nas variáveis! Fazer um número elevado ao quadrado é só multiplicar por ele mesmo, mas como vamos calcular a raiz quadrada no final? Resposta: Já q o MUGEN em sí não possui uma ferramente para extração de raiz, usaremos o mesmo cálcua das calculadoras q existem por ai! Elas utilizam o Número de Euler e Logoratmo para extrair a raiz, chegando na seguinte fórmula: Traduzindo: A raiz de um número é igual ao Número de Euler elevado a 0,5 vezes o logaritmo LN daquele número. Para nossa felicidade, o MUGEN possui todas as ferramentas q precisamos parar fazer esses cálculos! O Número de Euler é um trigger e é representado apenas pela letra "E", mas nós não queremos apenas o Número de Euler, nós queremos elevá-lo à alguma coisa, então, podemos usar o Trigger "Exp" q nada mais é do que o Número de Euler elevado a alguma coisa! Pergunta: Como funciona o trigger "Exp"? Resposta: Exp(valor), ou seja, é o número de Euler elevado à algum valor! Pergunta:e o Logaritmo? Resposta: O logaritmo é calculado no MUGEN com o trigger "Log", mas nós não queremos um logaritmo normal, nós queremos o logaritmo Ln que existe na fórmula, e felizmente o MUGEN possui o trigger "Ln". Pergunta: E como fica o código para calcular a distância? Pq até agora a gente só armazenou a distância X e Y... O código para calcular a distância vai ficar assim: Quote [State -3, Distância Real] Type = VarSet Trigger1 = 1 FV = 2 Value = Exp(0.5*Ln((FVar(0)*FVar(0))+(FVar(1)*FVar(1)))) Pergunta: Não entendi nada daqueles parênteses locos O___O Resposta: O q acontece é que o MUGEN trabalha apenas com parênteses, mas se quisermos transformar em uma fórmula matemática no papel, ficaria assim: Exp{0.5*Ln[(FVar(0)*FVar(0))+(FVar(1)*FVar(1))]} Os cálculos q são realizados primeiro são os q estão dentro dos parênteses, seguidos pelos colchetes e, por fim, a chave, ou seja, a ordem do cálculo ficou: 1º Elevar as distâncias armazenadas ao quadrado 2º Somar os resultados do 1º resultado 3º Tirar o logaritmo do 2º resultado e multiplica-lo por 0,5 4º Elevar o Número de Euler ao 3º resultado Pergunta: E como eu posso testar pra ver se esse cálculo deu certo? Resposta: Você pode usar um DisplayToClipboard para escrever os valores das FVars no modo debug! Quote [State -3, Valores das FV's] type = DisplayToClipboard trigger1 = 1 text = "Dist X = %d || Dist Y = %d || Dist = %d" params = FVar(0), Fvar(1), Fvar(2) Se fizermos os cálculos: Quote 163,452² = 140² + (-84,36)² 26716,556304 = 19600 + 7116,6096 26716,556304 = 26716,6096 Não deu EXATO, mas deu um valor bem aproximado! Pois o MUGEN arredonda algumas casas! Se você fizer a raiz de 26716,6096, você vai ter o resultado: 163,45216303249... Pergunta: UIA! Interessante, mas aonde é que eu posso aplicar esse código ai?? .-. Resposta: Sinceramente, existem poucas apicações para esse código em sí, você pode usá-lo para calcular a distância ao invés de apenas usar a distância X, porque se você quiser fazer um golpe q só é possível se o inimigo estiver perto, normalmente vai usar o P2Dist X, mas e se o inimigo estiver perto mas estiver no ar? Então você pode usar esse código para calcular uma distância mais exata! Pergunta: Hummm, mas você disse ali em cima "esse códig em sí", o que você quiz dizer com isso? Resposta: Esse código pode ser melhorado se usarmos trigonometria para calcular os ângulos do triângulo, com isso, poderiamos usar o código em helpers para eles ficarem com o ângulo certinho quando estiver indo na direção do inimigo! Pergunta: Você vai postar esse código com trigonometria? Resposta: Não! Apesar de eu gostar muito de matemática, odeio trigonomeria xD Bom, vou ficando por aqui, espero que esse tutorial seja útil para alguém xD Flws!
|
Hospedagem | Deseja ter seu trabalho hospedado aqui? Clique aqui. |
Calendário | « Maio 2024 » | S | T | Q | Q | S | S | D | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
|
Link Us |
Clique na imagem para ver o código.
|
|