KIR1TO | Data: Sábado, 15/12/2012, 8:20 PM | Mensagem # 1 |
Iniciante
Grupo: Usuários
Mensagens: 1
Awards: 0
Reputação: 0
Status: Offline
| Yo povo da AM, sou novo aki e eu tenho uma duvida estou criando um char do Pain e quero q quando ele arremese a kunai ela vá inclinada em direçao ao p2 e tbm q ela fosse na direçao do p2 me ajudem
|
|
| |
Thunderbert | Data: Sábado, 15/12/2012, 11:26 PM | Mensagem # 2 |
Criador Iniciante
Grupo: Usuários
Mensagens: 343
Awards: 0
Reputação: 19
Status: Offline
| Cara, primeiramente, vamos ver um pouquinho de matemática xD
Pra isso, precisaremos de trigonometria:
tg = cateto oposto / cateto adjacente
Pra q precisamos da tangente? Pq o mugen tem o trigger chamado ATan, q nos dá o ângulo q tem aquela tangente, e queremos o ângulo formado entre o player e o inimigo.
agora, o q são cateto oposto e o cateto adjacente?
cateto oposto = distância Y entre os chars cateto adjacente = distância X entre os chars
Outra coisa importante q vc deve saber é decompor um vetor, no caso, a velocidade do char, pois você tem uma velocidade desejada, mas tem q decompor ela em X e Y para q ela possa seguir no ângulo desejado.
Velocidade X = Velocidade * Cos Velocidade Y = Velocidade * Sen
OK, agora com isso em mãos, vamos ao código o/
Primeiramente, vamos armazenar o ângulo entre o Helper e o Inimigo para facilitar os cálculos, no exemplo, eu usei a FVar 39 e, como não existe divisão por 0, eu coloquei pra usar distância 0.1 caso a distância X seja menor ou igual a 0, além disso, estou somando a posição central Y do inimigo para que o helper não vá na direção do pé do inimigo.
[State 401, VarSet] Type = VarSet Trigger1 = !Time FV = 39 Value = ATan((P2Dist Y + EnemyNear,Const(Size.Mid.Pos.Y))/IfElse(P2Dist X <= 0, 0.1, P2Dist X))
Com o ângulo calculado, vamos decompor a velocidade em X e Y, no exemplo, a velocidade q eu quero é 10, isso você vai modificando até achar q fica bom, a FVar usada aqui deve ser a mesma utilizada no VarSet anterior
[State 401, VelSet] Type = VelSet Trigger1 = 1 X = 10.0*Cos(FVar(39)) Y = 10.0*Sin(FVar(39))
A parte à seguir é opcional, ele vai girar o helper de acordo com o ângulo, como o trigger ATan retorna o valor em PI radianos e o AngleDraw usa valores em graus, eu estou fazendo a conversão necessária ^^
[State 401, AngleDraw] Type = AngleDraw Trigger1 = 1 Value = -(180*FVar(39))/PI
Enfim, espero ter ajudado ^^
Vlw MD ² Vlw Baka-Sennin Vlw FM ²
|
|
| |
OIlusionista | Data: Domingo, 16/12/2012, 12:07 PM | Mensagem # 3 |
Editor
Grupo: Usuários
Mensagens: 180
Awards: 0
Reputação: 7
Status: Offline
| Mandou bem nessa, Thunder.
Beeing here since 1999
|
|
| |