Elem8100 / MapleStory-GM-Client

Offline MapleStory Client Emulator
Mozilla Public License 2.0
352 stars 95 forks source link

怎么设置身体各个部位的坐标,不会导致图片偏移 #19

Closed BuladeMian closed 2 years ago

BuladeMian commented 4 years ago

如题

BuladeMian commented 4 years ago

身体的各个部位的坐标 计算公式,已知的和未知的 坐标变量 怎么获得?

BuladeMian commented 4 years ago
  Self.Offset.X := Origin.X + Navel.X - BodyNavel.X - TamingNavel.X;
  Self.Offset.Y := Origin.Y + Navel.Y - BodyNavel.Y - TamingNavel.Y;

这些坐标是怎么获得的?

Elem8100 commented 4 years ago

http://forum.ragezone.com/f923/looking-render-maplestory-gms-v83-1176964/

BuladeMian commented 4 years ago

TamingNavel这个变量如何获取?

Elem8100 commented 4 years ago

平常是0,0, 有座騎寵時才加上的 例如Character.wz/TamingMob/xxxxxxxx.img/walk1/0/0/map/navel

BuladeMian commented 4 years ago

如何获得坐标的方法。使用HaRepacker软件提取客户端的Character.wz文件,获得Character.wz文件下面的00002000.img文件,里面有详细的坐标参数。 把影响Unity的2DSprite坐标的属性 的 坐标 全部设置为0,并控制变量进行实验, 改变单个属性,并且把试验的结果 记录下来,依次调整。 最后每个身体的部位 都会获得一个公式。

BuladeMian commented 4 years ago

Body X = - bodyOriginX; Y= +bodyOriginY;

arm x = + bodyNavelX – armNavelX – armOriginX; y = - bodyNavelY + armNavelY + armOriginY;

rHand x = - rHandNavelX – rHandOriginX + bodyNavelX; y = rHandNavelY + rHandOriginY – bodyNavelY;

head x = +bodyOriginX

DevenWen commented 3 years ago

hi。得到最终的渲染公式后,怎么把图贴上去。

Body X = - bodyOriginX; // 为什么此处需要用负数 Y= +bodyOriginY;

arm x = + bodyNavelX – armNavelX – armOriginX; // 这里的调用逻辑是怎么的?为什么需要加上 bodyNavel,再减去 armNavel y = - bodyNavelY + armNavelY + armOriginY;

rHand x = - rHandNavelX – rHandOriginX + bodyNavelX; y = rHandNavelY + rHandOriginY – bodyNavelY;

head x = +bodyOriginX

  • headNeckX //- headOriginX
  • bodyNeckX - 3 ; y = +bodyOriginY
  • headNeckY - headOriginY
  • bodyNeckY + 3

花了一周时间来研究这些坐标了,但是现在还是没有办法正确的贴上去。 其他装备、头饰等逻辑也一致么?

我最近计划将这些资源整合起来,写一个 web 版的 Maplestory, wenkangqiang 是我的微信,希望可以和你交流一下。

DevenWen commented 3 years ago

我刚已经解决坐标的定位问题。坐标没有问题,问题在于渲染图片上,wz 的文件是要求图片从左上角进行渲染的,但我的框架是通过图片的中间点进行渲染的,所以一直坐标都没被调整正确。