赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 928 |
最后登录 | 2017-2-5 |
在线时间 | 16 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 16 小时
- 注册时间
- 2010-10-22
- 帖子
- 28
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 zoro1999 于 2010-11-2 22:30 编辑
[/code]http://rpg.blue/web/htm/news453.htm
1、待机动画
原理:常规战斗的情况下,有两种让图像动起来的方法。一种是使用循环动画,另一种是不断更改角色的战斗图。
怎样给角色添加循环动画呢?你可以设置一个状态名为“正常”,然后在这个状态附带循环动画里面制作上角色的待机动画。如果需要,可以附带这个脚本:shownews.asp?id=381,会防止挨打动画丢失。这种方法的特点是可以制作复杂的待机动作,缺点是占用了循环动画,导致一些状态动画不能显示了。
另一种方法是更改角色战斗图,这个方法没有副作用,但是需要一些脚本知识。为了方便,我们将待机动画的4个动作放在一张战斗图里面,横着排列。(你如果脚本知识牢靠,可以不使用本教学的方法,本教学仅做统一范例而已)
这张图片的名字是li.png,将作为角色的战斗图。
角色战斗图的刷新是在Sprite_Battler里面。所以,现在修改一下这个脚本。
添加两个属性:- def initialize(viewport, battler = nil)
- super(viewport)
- @battler = battler
- @battler_visible = false
- #★★★★★★★★★★★★
- @nx = 0
- @xbit = 0
- #★★★★★★★★★★★★
- end
复制代码 @nx表示当前的帧数,@xbit表示当前的图像。刚开始的时候都是0值。
这段表示如果战斗中角色战斗图更换则重新换图片。在此下面添加一个刷新效果:- # 文件名和色相与当前情况有差异的情况下
- if @battler.battler_name != @battler_name or
- @battler.battler_hue != @battler_hue
- # 获取、设置位图
- @battler_name = @battler.battler_name
- @battler_hue = @battler.battler_hue
- self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
- @width = bitmap.width
- @height = bitmap.height
- self.ox = @width / 2
- self.oy = @height
- # 如果是战斗不能或者是隐藏状态就把透明度设置成 0
- if @battler.dead? or @battler.hidden
- self.opacity = 0
- end
- end
- if @battler.is_a?(Game_Actor)
- @nx += 1
- @nx %= 40 #每帧+1,40帧一个循环
- @xbit = @nx / 10 * self.bitmap.width/4 #获得当前的图像坐标
- self.src_rect.set(@xbit, 0, self.bitmap.width/4, self.bitmap.height) #设置当前战斗图的图像
- end
复制代码 这段就是表示,如果这个battler是角色的时候,每隔10帧角色的动画更新一次。好了。你把上面的图像和脚本放到自己的游戏中,就已经是具有待机动画的了。坐标可能不是很好,自己调一下即可。
修改成这个脚本后,人物的待机图出现了,但是被攻击后的伤害显示数字跑了位置,要在什么地方才可以把位置调到战斗图的位置上去呢???请各位指教!!!
我已经把脚本修改过程都发出来了,上面红色的字是最后一段,坐标不是很好,自己调一下即可,我就是不会调{:nm_2:}
|
-
1.PNG
(622.95 KB, 下载次数: 9)
|