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

Project1

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

有谁教教我怎么实现这个功能

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
60
在线时间
1 小时
注册时间
2007-5-23
帖子
57
跳转到指定楼层
1
发表于 2007-6-21 03:22:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
我想用站上的教程"超级战斗制作教学 (待机,挨打,防御,倒地动画等)"里面的方法实现 待机,挨打.防御,等动画...懂是懂了...但是我发现了个问题...就是如果我的待机图片由8个动作构成,而挨打图片是4个动作构成...胜利后动画图片是16个动作构成..但是统一用
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
这个方法来刷新就出现问题了..而把所有图片都做成有相同的动作数目来构成的话..又出现了新问题..比如我挨打动画,本来只要4帧..但是做成了8帧的画会慢了很多..很不好看...而象胜利动画作成8个动作的话又少了不少的动作..
我想的就是可不可用if语句改一下
比如在防御时候为(防御图由8个动作构成)
 @nx += 1
     @nx %= 80 #每帧+1,40帧一个循环
     @xbit = @nx / 10 * self.bitmap.width/8 #获得当前的图像坐标
     self.src_rect.set(@xbit, 0, self.bitmap.width/8, self.bitmap.height)
在待机情况下(待机图由6个动作构成)
@nx += 1
     @nx %= 60 #每帧+1,40帧一个循环
     @xbit = @nx / 10 * self.bitmap.width/6 #获得当前的图像坐标
     self.src_rect.set(@xbit, 0, self.bitmap.width/6, self.bitmap.height)
...等等
但是我刚刚学,不知道怎么改...有谁教教我怎么改...谢谢了

Lv1.梦旅人

梦石
0
星屑
60
在线时间
1 小时
注册时间
2007-5-23
帖子
57
2
 楼主| 发表于 2007-6-21 03:22:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
我想用站上的教程"超级战斗制作教学 (待机,挨打,防御,倒地动画等)"里面的方法实现 待机,挨打.防御,等动画...懂是懂了...但是我发现了个问题...就是如果我的待机图片由8个动作构成,而挨打图片是4个动作构成...胜利后动画图片是16个动作构成..但是统一用
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
这个方法来刷新就出现问题了..而把所有图片都做成有相同的动作数目来构成的话..又出现了新问题..比如我挨打动画,本来只要4帧..但是做成了8帧的画会慢了很多..很不好看...而象胜利动画作成8个动作的话又少了不少的动作..
我想的就是可不可用if语句改一下
比如在防御时候为(防御图由8个动作构成)
 @nx += 1
     @nx %= 80 #每帧+1,40帧一个循环
     @xbit = @nx / 10 * self.bitmap.width/8 #获得当前的图像坐标
     self.src_rect.set(@xbit, 0, self.bitmap.width/8, self.bitmap.height)
在待机情况下(待机图由6个动作构成)
@nx += 1
     @nx %= 60 #每帧+1,40帧一个循环
     @xbit = @nx / 10 * self.bitmap.width/6 #获得当前的图像坐标
     self.src_rect.set(@xbit, 0, self.bitmap.width/6, self.bitmap.height)
...等等
但是我刚刚学,不知道怎么改...有谁教教我怎么改...谢谢了

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1707
在线时间
3039 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

3
发表于 2007-6-21 03:27:19 | 只看该作者
那个If判定可是判断是否自己行动,如果去掉的话,敌人也要做。
另外,楼上的想法正解。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
1 小时
注册时间
2007-5-23
帖子
57
4
 楼主| 发表于 2007-6-21 04:38:29 | 只看该作者
具体该怎么做啊...我不知道该改哪里的脚本啊...对脚本还不是很熟..好比定义了个变量..当其为1的时候执行刷新防御图的操作...为2的时候为刷新挨打图的操作..但是我不知道改在哪里设定这些值的变化才有效...我尝试着在教程里换相应的战斗图的地方改变了这个变量的值...虽说没出现语法错误..但是好象也没作用...我先在Sprite_Battler里定义了个全局变量 $sssss 然后在Scene_Battle 4中 照教程里面修改的地方
if target.is_a?(Game_Actor)
       target.battler_name = target.battler_name.split(/★/)[0]
       if (target.current_action.kind == 0 and target.current_action.basic == 1) or target.damage == "Miss" or target.damage.to_i <= 0
         target.battler_name = target.battler_name + "★3"
           $sssss = 1
       else
         target.battler_name = target.battler_name + "★4"
           $sssss = 2
       end
     end
然后在Sprite_Battler里 def update的部分这样写的
if $sssss = 1
   @nx += 1
    @nx %= 80 #每帧+1,40帧一个循环
    @xbit = @nx / 10 * self.bitmap.width/8 #获得当前的图像坐标
    self.src_rect.set(@xbit, 0, self.bitmap.width/8, self.bitmap.height)
elseif $sssss =  2
   
@nx += 1
    @nx %= 60 #每帧+1,40帧一个循环
    @xbit = @nx / 10 * self.bitmap.width/6 #获得当前的图像坐标
    self.src_rect.set(@xbit, 0, self.bitmap.width/6, self.bitmap.height)
else
   @nx += 1
    @nx %= 160 #每帧+1,40帧一个循环
    @xbit = @nx / 10 * self.bitmap.width/16 #获得当前的图像坐标
    self.src_rect.set(@xbit, 0, self.bitmap.width/16, self.bitmap.height)
end
但是好象没效果..图片还是照最前面的方法显示 即 if $sssss = 1 下面的方法刷新的..

到底该怎么改啊....哪位知道怎么改 才可以啊


回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
1 小时
注册时间
2007-5-23
帖子
57
5
 楼主| 发表于 2007-6-22 02:18:44 | 只看该作者
已经解决了 原来是我的格式写错了  应该写为 $ssss == 1 呵呵
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2025-9-21 04:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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