| Logado como Visitante | Grupo "Visitantes" Está vendo: Forum | Sábado, 11/05/2024, 10:05 AM | RSS |
Anime Mugen


[ Novas Mensagens · Membros · Regras · Buscar · RSS ]
  • Página 1 de 2
  • 1
  • 2
  • »
Moderador do fórum: lMDl  
Forum » | M.U.G.E.N » Tutoriais e Dicas » Distância X e Y
Distância X e Y
FMitData: Sexta, 22/04/2011, 12:52 PM | Mensagem # 1
Criador
Grupo: Usuários
Mensagens: 706
Awards: 3
Reputação: 18
Status: Offline
Oi, como vai você? eu vou bem obrigado. -n '-'
Ok... primeiramente mugen é uma parada que faz paradas que você brinca de jogar que é um parada legal...
na aula de hoje...

Bom, vamos começar...

O nome dessa coisa é Sistema de Coordenadas no plano cartesiano ou espaço cartesiano ou plano cartesiano.
a distância é definida em valores negativos e positivos com x e y, todo mundo que programa chars sabe disso.

y é a distância vertical e x a distância horizontal
y se inicia no ponto de encontro a x, ou seja quando o valor de ambos é igual a 0.

valores de x são denominados da seguinte forma:
x negativo: quanto menor o valor o posicionamento irá para a esquerda
x positivo: quanto maior o valor o posicionamento irá para a direita

vamos supor que eu dê o valor y = -3 e x = 1, isso trará o ponto de encontro ao quarto quadrante, que será a nova posição do objeto.

FM o que isso tem a ver com o mugen?

nós usamos posicionamento em muitas coisas como:
SFF
AIR
CNS
CMD (sim isso não é mentira)

no SFF tem o posicionamento da sprite, onde nós 'alinhamos' a sprite... mas ela pode ser alinhada no momento que é criada a animação, o que muita gente provavelmente falaria que isso é incorreto, mas não é... isso vai do programador.
no CNS tem vaaaaaaaaaaaaaaaaarios codes que usam x e y...

mas FM, eu não gosto de x e y eu quero colocar w e r
problema o seu, x e y são valores padrões não pode mudar a letra (eu acho)

continuando... vou dar um bom exemplo aqui

[State 0, VelSet]
type = VelSet
trigger1 =
x = 0
y = 0
;ignorehitpause =
;persistent =

vocês geralmente veem o code assim (eu nunca usei os dois ultimos lol)

[State 900, VelSet D]
type = VelSet
trigger1 = time = [2, 17]
x = 0
y = 0

------------------------------------------------------------

[State 900, VelSet C]
type = VelSet
trigger1 = time = [2, 17]
x = 4,5
y = -3,5

------------------------------------------------------------

[State 900, VelSet B]
type = VelSet
trigger1 = time = [2, 17]
x = 6
y = 5

------------------------------------------------------------

[State 900, VelSet A]
type = VelSet
trigger1 = time = [2, 17]
x = -5
y = 3

Visualização em tabela:

qualquer animal entende isso e deixa de usar o Offset (apesar de muitos terem preguiça de pensar e apelar a ferramenta)

Statedef tem a linha:
velset = x,y

BindToParent, BindToRoot e BindToTarget tem a linha:
pos = x,y

Explod tem as linhas:
vel = x,y
pos = x,y
scale = 1,1 (essa eu explico no final)

HitDef tem as linhas:
sparkxy = x,y

Helper finalmente:
size.xscale = x
size.yscale = y
pos = x,y

scale padrão e 1,1 que deixa a posição X original e Y original em questão do tamanho da sprite do personagem...
numeros como 1.1, 1.2 podem ser dados também como -1.25 e assim em diante...
valores negativos diminuiem a sprite e positivos almentam a sprite...
a parte legal é que uma sprite pequena fica grande e deixa a jogabilidade melhor, a parte ruim é que o air não segue a programação então os blocos de colisão e dano ficam do mesmo tamanho .-.

só pra um engraçadinho não aparecer ele falar: você esqueceu desse code.
eu não coloquei todos, só dei exemplos que não se repetem.

X e Y dão o valor de posição de sparks, sprite, velocidade , tamanho entre outras coisas mais complexas como angulo... e triggers...

aprender isso é primordial para uma boa programação...
espero ter deixado vocês um pouco mais cientes do que é posição (:

obs: eu ainda vou matar um cara que coloca o valor -0 na posição ._.' nem os gringos fazem isso...




Mensagem editada por FMit - Sexta, 22/04/2011, 12:53 PM
 
Ryoichi-KunData: Sexta, 22/04/2011, 4:52 PM | Mensagem # 2
Criador Iniciante
Grupo: Moderador Global
Mensagens: 311
Awards: 3
Reputação: 10
Status: Offline
Bom tutorial o/

Realmente é essencial a pessoa aprender isso,se quiser ter um ótimo alinhamento e etc.

PS: Esse tópico deveria estar em Tutoriais e Dicas =P




WIP's

Fairy Tail Project 2011/2012
 
FMitData: Sexta, 22/04/2011, 5:29 PM | Mensagem # 3
Criador
Grupo: Usuários
Mensagens: 706
Awards: 3
Reputação: 18
Status: Offline
eu não prestei atenção ao criar o topico, erro meu...
porem as opções de mover topico não estão aparecendo pra mim ._.
provavelmente porque eu mudei de nick, vou esperar o Tidus ou o Gotagz entrar pra resolver isso.


 
OIlusionistaData: Sexta, 22/04/2011, 7:06 PM | Mensagem # 4
Editor
Grupo: Usuários
Mensagens: 180
Awards: 0
Reputação: 7
Status: Offline
Vale lembrar que:

1)

VelAdd, VelSet e outros sobre velocidade aceitam valores não inteiros (float ou números Ponto flutuante, ou números reais).
Mas PosSet, PosAdd e outros (como bind) SOMENTE ACEITAM VALORES INTEIROS (integer)

Ou seja: isso funciona:

Quote
Type = VelSet
x = 3.45

Mas isso não

Code
Type = PosSet
x = 3.45

Com o modo de Debug ligado, vemos que aparece um erro no debug, pq o valor é truncado.

Sempre que precisar usar um valor para X ou Y e eles puderem ser não inteiros, é melhor arredondar, utilizando floor para arredondar para baixo, e Ceil para arredondar pra cima.

2)

Há um erro em uma das imagens. O plano Y é NEGATIVO para cima, e não pra baixo, no Mugen. Uma posição Y=-10 é acima do solo (ponto 0) e não abaixo.



Beeing here since 1999


Mensagem editada por OIlusionista - Sábado, 23/04/2011, 0:40 AM
 
FMitData: Sexta, 22/04/2011, 11:51 PM | Mensagem # 5
Criador
Grupo: Usuários
Mensagens: 706
Awards: 3
Reputação: 18
Status: Offline
questão de principios, meu ponto focal foi explicar x e y não a variação de valores em cada code especifico, se não eu teria que explicar a parte de stages e screenpack
já que pra quem não sabe valores de x e y são invertidos em SP, negativo pra baixo e positivo pra cima (Y) etc.. etc...

na questão do erro de plano foi desatenção na pesquisa de imagens.


 
OIlusionistaData: Sábado, 23/04/2011, 0:32 AM | Mensagem # 6
Editor
Grupo: Usuários
Mensagens: 180
Awards: 0
Reputação: 7
Status: Offline
Relaxa, eu nao estava brigando contigo, so estava complementado sua otima explicação.

Quote
já que pra quem não sabe valores de x e y são invertidos em SP

São invertidos em SP, cenarios e nos chars tbem.


Beeing here since 1999


Mensagem editada por OIlusionista - Sábado, 23/04/2011, 0:34 AM
 
FMitData: Sábado, 23/04/2011, 0:36 AM | Mensagem # 7
Criador
Grupo: Usuários
Mensagens: 706
Awards: 3
Reputação: 18
Status: Offline
OIlusionista, relaxa, eu não entendi como uma ofença, considerei seu comentário como um complemento pra minha 'dica' pro pessoal, nunca vejo nada negativo em um comentário.
só expliquei porque não toquei em alguns assuntos que citou.

de boa ^^

-------------------------

Quote (OIlusionista)
São invertidos em SP, cenarios e nos chars tbem.

opa, então deixei alguma coisa passar que eu não lembro, vou dar uma olhada em alguns documentos aqui e confirmo o que é invertido especialmente na SP




Mensagem editada por FMit - Sábado, 23/04/2011, 0:39 AM
 
OIlusionistaData: Sábado, 23/04/2011, 0:42 AM | Mensagem # 8
Editor
Grupo: Usuários
Mensagens: 180
Awards: 0
Reputação: 7
Status: Offline
blz :)

Pra testar:

Code
[state 0, teste]
Type = PosSet
Trigger1 = 1
y = -10

ele fica acima do solo. Se for 10, fica abaixo.


Beeing here since 1999
 
SonSon3000Data: Sábado, 23/04/2011, 1:15 AM | Mensagem # 9
Aprendiz Destaque
Grupo: Mugen News
Mensagens: 100
Awards: 0
Reputação: 4
Status: Offline
seria interessante, esse tópico, complementar os triggers P2BodyDist X e P2BodyDist Y, ja que o tópico ta se referindo as distancias...
=D

e a utilidade sobre o famoso calculo de distancia direta/real:

Quote
(((P2BodyDist X**2)+(P2BodyDist Y**2))**0.5)

se quiser posso ajudar com isso ^^

PS: desculpem-me, mas eu tenho mania de usar bastantes parenteses para deixa o calculo bem "claro", para o mugen XD


Visitem o meu cantinho do mugen: SonSon3000 - NEWS

*Projetos, Lançamentos, Tutoriais, News e outros*
 
OIlusionistaData: Sábado, 23/04/2011, 1:27 AM | Mensagem # 10
Editor
Grupo: Usuários
Mensagens: 180
Awards: 0
Reputação: 7
Status: Offline
Legal o código. Nao me lembro de ter usado o ** ainda.

Vc sabe que esse codigo so funciona no modo arcade ne? No modo simul, ele sempre retorna o valor do P2, nunca do p4.

Teria que trocar pra EnemyNear, Pos X e EnemyNear, Pos Y


Beeing here since 1999
 
SonSon3000Data: Sábado, 23/04/2011, 1:50 AM | Mensagem # 11
Aprendiz Destaque
Grupo: Mugen News
Mensagens: 100
Awards: 0
Reputação: 4
Status: Offline
verdade.
mas ai que tá, o stage da metade pra esquerda o pos x é negativo, e da metade da direita é positivo.

se os chars estiverem um em cada lado do stage, o calculo sai zuado
heuehuehuehe

pq pra medir a distanci entre os chars, seria a posição x do char subtraindo a posição x do oponente, certo??
mas os lados do stage influencia nos sinais, oq acabaria inlfuenciando no calculo inteiro =/


Visitem o meu cantinho do mugen: SonSon3000 - NEWS

*Projetos, Lançamentos, Tutoriais, News e outros*
 
OIlusionistaData: Sábado, 23/04/2011, 1:55 AM | Mensagem # 12
Editor
Grupo: Usuários
Mensagens: 180
Awards: 0
Reputação: 7
Status: Offline
Sim, vc teria que subtrair a Pos X do oponente da sua.

É verdade, o valor muda conforme a sua posição.


Beeing here since 1999


Mensagem editada por OIlusionista - Sábado, 23/04/2011, 1:56 AM
 
SonSon3000Data: Sábado, 23/04/2011, 2:35 AM | Mensagem # 13
Aprendiz Destaque
Grupo: Mugen News
Mensagens: 100
Awards: 0
Reputação: 4
Status: Offline
cheguei a essa conclusão:
Code
[State -2, Largura do oponente]
type = VarSet
trigger1 = 1
fvar(5) = (enemynear,const(size.ground.back))+(enemynear,const(size.ground.front))
ignorehitpause = 1

[State -2, Distancia X entre os chars]
type = VarSet
trigger1 = 1
fvar(6) = ((enemynear,screenpos x - screenpos x)*facing)-fvar(5)
ignorehitpause = 1

[State -2, Distancia Y entre os chars - Check 1]
type = VarSet
trigger1 = pos y <= 0 && enemynear, pos y <= 0
fvar(7) = enemynear, pos y - pos y
ignorehitpause = 1
[State -2, Distancia Y entre os chars - Check 2]
type = VarSet
trigger1 = pos y >= 0 && enemynear, pos y >= 0
fvar(7) = enemynear,pos y + pos y
ignorehitpause = 1
[State -2, Distancia Y entre os chars - Check 3]
type = VarSet
trigger1 = pos y <= 0 && enemynear, pos y >= 0
trigger2 = pos y >= 0 && enemynear, pos y <= 0
fvar(7) = pos y + enemynear, pos y
ignorehitpause = 1

[State -2, Distancia REAL entre os chars]
type = VarSet
trigger1 = 1
fvar(8) = ((fvar(6)**2)+(fvar(7)**2))**.5
ignorehitpause = 1

Creio que isso agora faça oq prometa.

EDIT: ah, se forem usar, deêm créditos. XD
e se acharem q postei isso no lugar inadequado, podem excluir ou editar o post. :)

EDIT2: e para complementar:
a fvar(6) pode ser usada no lugar do P2BodyDist X e a fvar(7) no lugar do P2BodyDist Y.
e tem mais a fvar(8) que é a distancia real :P


Visitem o meu cantinho do mugen: SonSon3000 - NEWS

*Projetos, Lançamentos, Tutoriais, News e outros*


Mensagem editada por SonSon3000 - Sábado, 23/04/2011, 3:34 PM
 
TidusData: Sábado, 23/04/2011, 2:28 PM | Mensagem # 14
Criador
Grupo: Administradores
Mensagens: 557
Awards: 0
Reputação: 25
Status: Offline
Boa dica e achei bacana o pessoal discutindo sobre o mesmo, Estou movendo o tópico para "Tutoriais e Dicas".



Conhecimento é a única virtude e ignorância é o único vício.

Twitter - Follow Me
www.jgnetwork.com.br | JG Network - Desenvolvimento em Web.


 
FMitData: Sábado, 23/04/2011, 2:33 PM | Mensagem # 15
Criador
Grupo: Usuários
Mensagens: 706
Awards: 3
Reputação: 18
Status: Offline
OIlusionista, SonSon3000, vocês tão começando a ir além do meu conhecimento UHEAUEHEUAHAH
var é legal por isso, sempre tem alguma coisa que a gente num sabe
mas que fique a dica que nem sempre o valor 0 é no meio de um stage... mas isso seria uma diferênça minima, na maioria das vezes não faz diferença
Tidus, valeu i-i


 
Forum » | M.U.G.E.N » Tutoriais e Dicas » Distância X e Y
  • Página 1 de 2
  • 1
  • 2
  • »
Buscar:

Copyright Anime Mugen © 2024 Hospedado por uCoz
Refresh Smileys Manager
Mini-chat