抛开背景OX OY的移动,单说缩放的部分。 OX OY是原点坐标,如果背景的zoom发生改动,你想让前景的SPRITE保持相对位置不变,除了前景的zoom做同样的变化外,前景的OX OY也应该会有一些改动才对。 |
其实拉近镜头把所有sprite的ox与oy设置在同一点放大才会一致。 只是在更改ox与oy的同时显示的位置会跟着更改,所以要先修正坐标,然后放大,最后是更改src_rect,这样就有拉近的效果,具体可以参考RTAB,不过RTAB貌似有些复杂,有些脚本底应该勉强看得懂。 |
本帖最后由 david50407 于 2010-11-12 23:44 编辑 额... 不好意思我脑残了 应该是这样的... 用原先的ox oy 就好 不过 x y 的部分要再做缩放判断 先取一个基准点 (消失点) ex: P(320, 240) 然后修改脚色与基准点的座标 self.x = P.x + (P.x - @battler.screen_x) * self.zoom_x ## Sprite_Battler 最下面那几行 以此类推... |
Sprite_Battler: self.ox = 640 / 2 self.oy = 480 / 2 self.x += self.ox - @width / 2 self.y += self.oy - @height |
ox = 640 / 2 oy = 480 / 2 s = Sprite.new s.ox = ox s.oy = oy s.x += ox s.y += oy s.zoom = 0.8 当每个Sprite都照s做时 x y座标会"相对"的一起变换 不必担心x y 座标位置的问题 |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2025-6-26 20:32
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.