Project1

标题: 战斗镜头拉近的原理 [打印本页]

作者: wbsy8241    时间: 2010-11-10 22:59
标题: 战斗镜头拉近的原理
战斗镜头拉近是不是循环所有对象
更改对象的x,y坐标zoom_x,zoom_y的大小?

整体移动镜头用了 更改Viewport 的ox,oy 却缩放不了对象
还是 移动镜头也用循环所有对象比较好?
作者: david50407    时间: 2010-11-10 23:13
ox,oy是位移 不是缩放
作者: david50407    时间: 2010-11-12 18:13
其实只要所有对象的ox, oy 都设置在同一点(艺术课叫: 消失点)
再进行缩放
意想不到的事就会发现了 = =b
作者: wbsy8241    时间: 2010-11-12 18:43
回复 david50407 的帖子



想想不对 测试果然不对呢
作者: david50407    时间: 2010-11-12 19:51
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 座标位置的问题
作者: wbsy8241    时间: 2010-11-12 21:20
回复 david50407 的帖子



这样不对呢= =
作者: david50407    时间: 2010-11-12 22:12
Sprite_Battler:
self.ox = 640 / 2
self.oy = 480 / 2
self.x += self.ox - @width / 2
self.y += self.oy - @height

作者: wbsy8241    时间: 2010-11-12 23:12
回复 david50407 的帖子


还是不行呢 = =
作者: david50407    时间: 2010-11-12 23:44
本帖最后由 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 最下面那几行
以此类推...
作者: enghao_lim    时间: 2010-11-12 23:45
其实拉近镜头把所有sprite的ox与oy设置在同一点放大才会一致。
只是在更改ox与oy的同时显示的位置会跟着更改,所以要先修正坐标,然后放大,最后是更改src_rect,这样就有拉近的效果,具体可以参考RTAB,不过RTAB貌似有些复杂,有些脚本底应该勉强看得懂。
作者: 亿万星辰    时间: 2010-11-13 09:29
抛开背景OX OY的移动,单说缩放的部分。
OX OY是原点坐标,如果背景的zoom发生改动,你想让前景的SPRITE保持相对位置不变,除了前景的zoom做同样的变化外,前景的OX OY也应该会有一些改动才对。
作者: 789456qwe    时间: 2013-4-2 13:39
亿万星辰 发表于 2010-11-13 09:29
抛开背景OX OY的移动,单说缩放的部分。
OX OY是原点坐标,如果背景的zoom发生改动,你想让前景的SPRITE保 ...



使全屏技能动画时
怎么用战斗画面镜头拉远




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1