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

Project1

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

[已经过期] 待机动画使用后,要怎么调位置.

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2010-10-22
帖子
28
跳转到指定楼层
1
发表于 2010-11-2 20:33:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 zoro1999 于 2010-11-2 22:30 编辑
  1. #==============================================================================
  2. # ■ Sprite_Battler
  3. #------------------------------------------------------------------------------
  4. #  战斗显示用活动块。Game_Battler 类的实例监视、
  5. # 活动块的状态的监视。
  6. #==============================================================================

  7. class Sprite_Battler < RPG::Sprite
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_accessor :battler                  # 战斗者
  12.   #--------------------------------------------------------------------------
  13.   # ● 初始化对像
  14.   #     viewport : 显示端口
  15.   #     battler  : 战斗者 (Game_Battler)
  16.   #--------------------------------------------------------------------------
  17.   def initialize(viewport, battler = nil)
  18.     super(viewport)
  19.     @battler = battler
  20.     @battler_visible = false
  21.    #★★★★★★★★★★★★
  22.    @nx = 0
  23.    @xbit = 0
  24.    #★★★★★★★★★★★★

  25.   end
  26.   #--------------------------------------------------------------------------
  27.   # ● 释放
  28.   #--------------------------------------------------------------------------
  29.   def dispose
  30.     if self.bitmap != nil
  31.       self.bitmap.dispose
  32.     end
  33.     super
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   # ● 刷新画面
  37.   #--------------------------------------------------------------------------
  38.   def update
  39.     super
  40.     # 战斗者为 nil 的情况下
  41.     if @battler == nil
  42.       self.bitmap = nil
  43.       loop_animation(nil)
  44.       return
  45.     end
  46.     # 文件名和色相与当前情况有差异的情况下
  47.     if @battler.battler_name != @battler_name or
  48.        @battler.battler_hue != @battler_hue
  49.       # 获取、设置位图
  50.       @battler_name = @battler.battler_name
  51.       @battler_hue = @battler.battler_hue
  52.       self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
  53.       @width = bitmap.width
  54.       @height = bitmap.height
  55.       self.ox = @width / 2
  56.       self.oy = @height
  57.       # 如果是战斗不能或者是隐藏状态就把透明度设置成 0
  58.       if @battler.dead? or @battler.hidden
  59.         self.opacity = 0
  60.       end
  61.     end
  62.     if @battler.is_a?(Game_Actor)
  63.      @nx += 1
  64.      @nx %= 40 #每帧+1,40帧一个循环
  65.      @xbit = @nx / 10 * self.bitmap.width/4 #获得当前的图像坐标
  66.      self.src_rect.set(@xbit, 0, self.bitmap.width/4, self.bitmap.height) #设置当前战斗图的图像
  67.    end
  68.     # 动画 ID 与当前的情况有差异的情况下
  69.     if @battler.damage == nil and
  70.        @battler.state_animation_id != @state_animation_id
  71.       @state_animation_id = @battler.state_animation_id
  72.       loop_animation($data_animations[@state_animation_id])
  73.     end
  74.     # 应该被显示的角色的情况下
  75.     if @battler.is_a?(Game_Actor) and @battler_visible
  76.       # 不是主状态的时候稍稍降低点透明度
  77.       if $game_temp.battle_main_phase
  78.         self.opacity += 3 if self.opacity < 255
  79.       else
  80.         self.opacity -= 3 if self.opacity > 207
  81.       end
  82.     end
  83.     # 明灭
  84.     if @battler.blink
  85.       blink_on
  86.     else
  87.       blink_off
  88.     end
  89.     # 不可见的情况下
  90.     unless @battler_visible
  91.       # 出现
  92.       if not @battler.hidden and not @battler.dead? and
  93.          (@battler.damage == nil or @battler.damage_pop)
  94.         appear
  95.         @battler_visible = true
  96.       end
  97.     end
  98.     # 可见的情况下
  99.     if @battler_visible
  100.       # 逃跑
  101.       if @battler.hidden
  102.         $game_system.se_play($data_system.escape_se)
  103.         escape
  104.         @battler_visible = false
  105.       end
  106.       # 白色闪烁
  107.       if @battler.white_flash
  108.         whiten
  109.         @battler.white_flash = false
  110.       end
  111.       # 动画
  112.       if @battler.animation_id != 0
  113.         animation = $data_animations[@battler.animation_id]
  114.         animation(animation, @battler.animation_hit)
  115.         @battler.animation_id = 0
  116.       end
  117.       # 伤害
  118.       if @battler.damage_pop
  119.         damage(@battler.damage, @battler.critical)
  120.         @battler.damage = nil
  121.         @battler.critical = false
  122.         @battler.damage_pop = false
  123.       end
  124.       # korapusu
  125.       if @battler.damage == nil and @battler.dead?
  126.         if @battler.is_a?(Game_Enemy)
  127.           $game_system.se_play($data_system.enemy_collapse_se)
  128.         else
  129.           $game_system.se_play($data_system.actor_collapse_se)
  130.         end
  131.         collapse
  132.         @battler_visible = false
  133.       end
  134.     end
  135.     # 设置活动块的坐标
  136.     self.x = @battler.screen_x
  137.     self.y = @battler.screen_y
  138.     self.z = @battler.screen_z
  139.   end
  140. end
  141. [hr]
复制代码
[/code]http://rpg.blue/web/htm/news453.htm
1、待机动画
原理:常规战斗的情况下,有两种让图像动起来的方法。一种是使用循环动画,另一种是不断更改角色的战斗图。

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

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

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

角色战斗图的刷新是在Sprite_Battler里面。所以,现在修改一下这个脚本。
添加两个属性:
  1. def initialize(viewport, battler = nil)
  2.    super(viewport)
  3.    @battler = battler
  4.    @battler_visible = false
  5.    #★★★★★★★★★★★★
  6.    @nx = 0
  7.    @xbit = 0
  8.    #★★★★★★★★★★★★
  9. end
复制代码
@nx表示当前的帧数,@xbit表示当前的图像。刚开始的时候都是0值。
这段表示如果战斗中角色战斗图更换则重新换图片。在此下面添加一个刷新效果:
  1. # 文件名和色相与当前情况有差异的情况下
  2.    if @battler.battler_name != @battler_name or
  3.       @battler.battler_hue != @battler_hue
  4.      # 获取、设置位图
  5.      @battler_name = @battler.battler_name
  6.      @battler_hue = @battler.battler_hue
  7.      self.bitmap = RPG::Cache.battler(@battler_name, @battler_hue)
  8.      @width = bitmap.width
  9.      @height = bitmap.height
  10.      self.ox = @width / 2
  11.      self.oy = @height
  12.      # 如果是战斗不能或者是隐藏状态就把透明度设置成 0
  13.      if @battler.dead? or @battler.hidden
  14.        self.opacity = 0
  15.      end
  16.    end
  17.    if @battler.is_a?(Game_Actor)
  18.      @nx += 1
  19.      @nx %= 40 #每帧+1,40帧一个循环
  20.      @xbit = @nx / 10 * self.bitmap.width/4 #获得当前的图像坐标
  21.      self.src_rect.set(@xbit, 0, self.bitmap.width/4, self.bitmap.height) #设置当前战斗图的图像
  22.    end
复制代码
这段就是表示,如果这个battler是角色的时候,每隔10帧角色的动画更新一次。好了。你把上面的图像和脚本放到自己的游戏中,就已经是具有待机动画的了。坐标可能不是很好,自己调一下即可。


修改成这个脚本后,人物的待机图出现了,但是被攻击后的伤害显示数字跑了位置,要在什么地方才可以把位置调到战斗图的位置上去呢???请各位指教!!!


我已经把脚本修改过程都发出来了,上面红色的字是最后一段,坐标不是很好,自己调一下即可,我就是不会调{:nm_2:}

1.PNG (622.95 KB, 下载次数: 9)

1.PNG

点评

代码功能不会用,没有效果???  发表于 2010-11-2 22:30
我把教程的链接发出来了,我修改的是其中待机的部份,请帮忙看一下是什么回事.  发表于 2010-11-2 22:21
代码功能是那个不是很懂  发表于 2010-11-2 22:08
脚本部分请用代码功能发,这次韩星人帮君编辑了,可怜我的流量~  发表于 2010-11-2 21:20

Lv3.寻梦者

梦石
0
星屑
3852
在线时间
1582 小时
注册时间
2006-5-5
帖子
2743
2
发表于 2010-11-2 20:39:05 | 只看该作者
你是否用了其他脚本无从得知;这给解决问题造成难度。
建议你将那套工程上传,便于大家研究
步兵中尉
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2010-10-22
帖子
28
3
 楼主| 发表于 2010-11-2 20:44:25 | 只看该作者
http://rpg.blue/web/htm/news453.htm
我用的是站内的脚本,上面只说了制作方法但是没有详细介绍怎么调节位置.
现在只是想请教一下调节方法.
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42344
在线时间
7599 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

4
发表于 2010-11-2 20:50:23 | 只看该作者
回复 zoro1999 的帖子

http://rpg.blue/thread-159955-1-1.html请参考此处,可以用文注名做标识,描绘移位,不过还是建议您直接编辑图片。

点评

而且我改图片的位置,伤害值也会跟着向后跑,我现在需要人帮忙给我把伤害值的位置调到战斗图上去.  发表于 2010-11-2 21:56
我试过了,和图片根本没关系,是脚本对战斗图片位置下了定义,我同时在使用横版战斗脚本,可能两个脚本的定义不一样,把战斗图和伤害值分开了.  发表于 2010-11-2 21:55
测试链接表示没问题,韩星人建议您改图片是因为我链接的范例适合大数量图片移位。  发表于 2010-11-2 21:24
请问LS发的是什么东西??PHP文件???用什么来打开???还有就是战斗图的编辑似乎太麻烦了点吧,要一点一点的调间距,而且还不一定能调到正确的位置去.  发表于 2010-11-2 21:20
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2010-10-22
帖子
28
5
 楼主| 发表于 2010-11-3 00:19:33 | 只看该作者
我想,大家只要帮忙把伤害数字显示位置的X坐标告诉我就行了我把坐标往前拉一下应该就搞掂了

点评

无论如何先谢谢您的热心帮忙.  发表于 2010-11-3 13:10
这样吗?那我试试吧,但是我改过几次发现战斗图像是在一个框里的,然后伤害值却在框的后面.  发表于 2010-11-3 13:03
如果你把图片加宽,你说它还定不定呢?待机动画脚本根本没有重新给坐标赋值,只是更改了图形.  发表于 2010-11-3 07:57
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2010-10-22
帖子
28
6
 楼主| 发表于 2010-11-3 13:53:46 | 只看该作者
经过一番测试后,我明白了原因,因为战斗图加宽,所以伤害数值自动取了图片的中间位置出现.
但是待机图却自动分割为4份,所以造成这个现像.到底有什么办法可以解决这个问题呢?
能不能让伤害数值取位取到战斗图的最左边去呢???希望大家帮忙解决一下,谢谢!

点评

....你把图片发上来,我帮你改,说清楚要往哪个方向移几个像素,保证你数字位置不变~  发表于 2010-11-3 19:08
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
16 小时
注册时间
2010-10-22
帖子
28
7
 楼主| 发表于 2010-11-3 19:56:14 | 只看该作者
本帖最后由 zoro1999 于 2010-11-3 20:02 编辑

我的单个战斗人物图片是57*127像素,图中似乎需要移动两个人物位置,那就左移114像素好了.感谢帮忙!

2.PNG (625.99 KB, 下载次数: 11)

2.PNG

2.PNG (625.99 KB, 下载次数: 10)

2.PNG

点评

……我说资源图片……你发截图我怎么改……  发表于 2010-11-4 13:10
额,好的,谢谢.  发表于 2010-11-3 23:53
最迟明天中午答复你,今日手机无能。  发表于 2010-11-3 23:07
我的角色坐标是 X:600 Y:225 Z:2  发表于 2010-11-3 20:04
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
105 小时
注册时间
2010-6-20
帖子
122
8
发表于 2010-11-3 21:34:35 | 只看该作者
本帖最后由 白萌奈奈 于 2010-11-3 21:35 编辑

{:nm_3:}把战斗图修改下......

点评

战斗图修改了一天证明除非我不要待机动画,否则只能是这样,怪我不会脚本,柳柳的这个脚本说明了是给熟悉脚本的人用的......可是我还是很想要待机.  发表于 2010-11-3 23:56
喵~~~~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
105 小时
注册时间
2010-6-20
帖子
122
9
发表于 2010-11-4 00:03:04 | 只看该作者
{:nm_3:}可以发例程出来看看?

评分

参与人数 1星屑 -30 收起 理由
fux2 -30 连贴

查看全部评分

喵~~~~
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3852
在线时间
1582 小时
注册时间
2006-5-5
帖子
2743
10
发表于 2010-11-4 20:20:21 | 只看该作者
你不把工程发上来,我们不知道你的战斗图(放在文件夹里的那个,不是游戏截图)的情况,实在不好解决。
把工程发上来不是什么难题吧?
步兵中尉
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 15:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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