Project1

标题: 45度战斗人物战斗待机动画 [打印本页]

作者: 亮F    时间: 2008-7-30 22:17
标题: 45度战斗人物战斗待机动画
45度战斗人物战斗待机动画,要怎么弄??? [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 司马睿风    时间: 2008-7-30 22:39
记得有全动画战斗脚本里就有待机设置,不过素材麻烦点就是了
作者: 亮F    时间: 2008-7-30 22:52
以下引用司马睿风于2008-7-30 14:39:06的发言:

记得有全动画战斗脚本里就有待机设置,不过素材麻烦点就是了

可以说详细点么???

作者: 威廉华莱士    时间: 2008-7-31 07:18
看这个。。。http://rpg.blue/web/htm/news453.htm [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 亮F    时间: 2008-7-31 17:52
以下引用威廉华莱士于2008-7-30 23:18:56的发言:

看这个。。。http://rpg.blue/web/htm/news453.htm

嗯,这个好像蛮好用的
不过很多脚本我都找不到位置改
可不可一直接告诉我哪几个脚本要改(我下载了范例~)
拜托啦~~~

作者: 威廉华莱士    时间: 2008-8-1 01:40
待机动画部分主要改Sprite_Battler这个类....就是原文中的这一段....

另一种方法是更改角色战斗图,这个方法没有副作用,但是需要一些脚本知识。为了方便,我们将待机动画的4个动作放在一张战斗图里面,横着排列。(你如果脚本知识牢靠,可以不使用本教学的方法,本教学仅做统一范例而已)

这张图片的名字是li.png,将作为角色的战斗图。

角色战斗图的刷新是在Sprite_Battler里面。所以,现在修改一下这个脚本。

初始化的部分: def initialize(viewport, battler = nil)
   super(viewport)
   @battler = battler
   @battler_visible = false
end



添加两个属性: def initialize(viewport, battler = nil)
   super(viewport)
   @battler = battler
   @battler_visible = false
   #★★★★★★★★★★★★
   @nx = 0
   @xbit = 0
   #★★★★★★★★★★★★
end



@nx表示当前的帧数,@xbit表示当前的图像。刚开始的时候都是0值。

刷新的部分def update,找到这段   # 文件名和色相与当前情况有差异的情况下
   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.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帧角色的动画更新一次。好了。你把上面的图像和脚本放到自己的游戏中,就已经是具有待机动画的了。坐标可能不是很好,自己调一下即可。





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