设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1106|回复: 0
打印 上一主题 下一主题

[已经过期] 关于战斗待机动画设置的一点小问题~求帮助~谢谢

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
505
在线时间
27 小时
注册时间
2011-7-23
帖子
1
跳转到指定楼层
1
发表于 2011-7-27 18:36:01 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
首先我参照了以下这段设置

1、待机动画
原理:常规战斗的情况下,有两种让图像动起来的方法。一种是使用循环动画,另一种是不断更改角色的战斗图。

怎样给角色添加循环动画呢?你可以设置一个状态名为“正常”,然后在这个状态附带循环动画里面制作上角色的待机动画。如果需要,可以附带这个脚本:http://www.66rpg.com/shownews.asp?id=381,会防止挨打动画丢失。这种方法的特点是可以制作复杂的待机动作,缺点是占用了循环动画,导致一些状态动画不能显示了。

另一种方法是更改角色战斗图,这个方法没有副作用,但是需要一些脚本知识。为了方便,我们将待机动画的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帧角色的动画更新一次。好了。你把上面的图像和脚本放到自己的游戏中,就已经是具有待机动画的了。坐标可能不是很好,自己调一下即可。






之前人物的位置按照45度战斗排好~~~~我设置了待机动画之后发现人物位置偏离了好远~但是如果硬去调人物战斗的坐标把人物拉回来的话,伤害数字就没了,而且战斗时选择人物的箭头也跟着偏离了~求指导~~~~~呜呜~
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-2 09:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表