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

Project1

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

[推荐问答] 使用技能时,对象如何显示两个动画。

[复制链接]

Lv2.观梦者


  • 更新完成啦

梦石
0
星屑
769
在线时间
6267 小时
注册时间
2006-6-7
帖子
8462
跳转到指定楼层
1
发表于 2012-7-18 17:51:34 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
毫无节操的来提问了,
用的是全动画战斗+23种动画特效。

因为不想拼素材XD,所以想到一个偷懒的办法,
我的思路是:
在game_battler 3里,
例如skill.id == 4 ,
  $game_variables[26] =  1740
  $duixiang = self

= = $duixiang  这个是用来判定对象,变量26是用来设定特定技能里特定附加显示的动画。

于是我在scene_battle 4里某处添加了

if $duixiang != nil
$duixiang.animation_id =  $game_variables[26]
end

但是每一次都是在第一次显示动画并且已经弹出伤害以后,#我试着在弹出伤害的地方修改,结果也只能是轮流显示动画,达到的效果和连续动画播放这个脚本达到的效果一样,
真心愁,求方法求指点。






最佳答案

点评

木有听我说  发表于 2012-7-19 14:27

评分

参与人数 1星屑 +1232 梦石 +2 收起 理由
hys111111 + 1232 + 2 补回悬赏。

查看全部评分

Lv2.观梦者


  • 更新完成啦

梦石
0
星屑
769
在线时间
6267 小时
注册时间
2006-6-7
帖子
8462
2
 楼主| 发表于 2012-7-19 14:13:13 | 显示全部楼层
hys111111 发表于 2012-7-19 12:54
if $duixiang != nil
$duixiang.animation_id =  $game_variables[26]
end

这个我倒是知道,关键添加的地方太多,
看来除了加一个def animation2 之外没什么好办法了。

点评

其实还可以在Spriteset_Battle那里添加几个sprite,并且与battler的sprite重合(该sprite显示循环动画)。  发表于 2012-7-19 14:24
回复

使用道具 举报

Lv2.观梦者


  • 更新完成啦

梦石
0
星屑
769
在线时间
6267 小时
注册时间
2006-6-7
帖子
8462
3
 楼主| 发表于 2012-7-19 19:14:27 | 显示全部楼层
  1. #==============================================================================
  2. # ■ Spriteset_Battle
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的活动块的类。本类在 Scene_Battle 类
  5. # 的内部使用。
  6. #==============================================================================

  7. class Spriteset_Battle
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_reader   :viewport4                # 敌人方的显示端口
  12.   attr_reader   :viewport2                # 角色方的显示端口
  13.   #--------------------------------------------------------------------------
  14.   # ● 初始化变量
  15.   #--------------------------------------------------------------------------
  16.   def initialize
  17.     # 生成显示端口
  18.     @viewport1 = Viewport.new(0, 0, 640, 480)
  19.     @viewport2 = Viewport.new(0, 0, 640, 480)
  20.     @viewport3 = Viewport.new(0, 0, 640, 480)
  21.     @viewport4 = Viewport.new(0, 0, 640, 480)
  22.     #@viewport1.z = 101
  23.     @viewport2.z = 101
  24.     @viewport3.z = 200
  25.     @viewport4.z = 5000
  26.     # 生成战斗背景活动块
  27.     @battleback_sprite = Sprite.new(@viewport1)
  28.     # 生成敌人活动块
  29.     @enemy_sprites = []
  30.     for enemy in $game_troop.enemies.reverse
  31.       @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  32.     end
  33.     # 生成敌人活动块
  34.     @actor_sprites = []
  35.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  36.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  37.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  38.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  39.    
  40.     #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  41.     @new_actor_sprites = []
  42.     @new_actor_sprites.push(RPG::Sprite.new)
  43.     @new_actor_sprites.push(RPG::Sprite.new)
  44.     @new_actor_sprites.push(RPG::Sprite.new)
  45.     @new_actor_sprites.push(RPG::Sprite.new)
  46.     #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  47.    
  48.    
  49.     # 生成天候
  50.     #@weather = RPG::Weather.new(@viewport1)
  51.     # 生成图片活动块
  52.     @picture_sprites = []
  53.     for i in 51..55
  54.       @picture_sprites.push(Sprite_Picture.new(@viewport3,
  55.         $game_screen.pictures[i]))
  56.     end
  57.     # 刷新画面
  58.     update
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● 释放
  62.   #--------------------------------------------------------------------------
  63.   def dispose
  64.     # 如果战斗背景位图存在的情况下就释放
  65.     if @battleback_sprite.bitmap != nil
  66.       @battleback_sprite.bitmap.dispose
  67.     end
  68.     # 释放战斗背景活动块
  69.     @battleback_sprite.dispose
  70.     # 释放敌人活动块、角色活动块
  71.     for sprite in @enemy_sprites + @actor_sprites  
  72.       sprite.dispose
  73.     end
  74.     # 释放天候
  75.     #@weather.dispose
  76.     # 释放图片活动块
  77.     for sprite in @picture_sprites
  78.       sprite.dispose
  79.     end
  80.     # 释放显示端口
  81.     @viewport1.dispose
  82.     @viewport2.dispose
  83.     @viewport3.dispose
  84.     #@viewport4.dispose
  85.   end
  86.   #--------------------------------------------------------------------------
  87.   # ● 显示效果中判定
  88.   #--------------------------------------------------------------------------
  89.   def effect?
  90.     # 如果是在显示效果中的话就返回 true
  91.     for sprite in @enemy_sprites + @actor_sprites
  92.       return true if sprite.effect?
  93.     end
  94.     return false
  95.   end
  96.   
  97.   #--------------------------------------------------------------------------
  98.   # ● 刷新画面
  99.   #--------------------------------------------------------------------------
  100.   def update
  101.     # 刷新角色的活动块 (对应角色的替换)
  102.     @actor_sprites[0].battler = $game_party.actors[0]
  103.     @actor_sprites[1].battler = $game_party.actors[1]
  104.     @actor_sprites[2].battler = $game_party.actors[2]
  105.     @actor_sprites[3].battler = $game_party.actors[3]
  106.    
  107.     #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  108.     #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  109.     for aa in 0...@actor_sprites.size

  110.       @new_actor_sprites[aa].x = @actor_sprites[aa].x

  111.       @new_actor_sprites[aa].y = @actor_sprites[aa].y

  112.       @new_actor_sprites[aa].z = @actor_sprites[aa].z

  113.       @new_actor_sprites[aa].ox = @actor_sprites[aa].ox

  114.       @new_actor_sprites[aa].oy = @actor_sprites[aa].oy

  115.       if $duixiang == @actor_sprites[aa].battler
  116.       p "尼玛终于P出来了"
  117.         @new_actor_sprites[aa].animation($data_animations[$game_variables[26]], true)

  118.       end

  119.     end


  120.     #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  121.    
  122.     # 战斗背景的文件名与现在情况有差异的情况下
  123.     if @battleback_name != $game_temp.battleback_name
  124.       @battleback_name = $game_temp.battleback_name
  125.       if @battleback_sprite.bitmap != nil
  126.         @battleback_sprite.bitmap.disposen
  127.       end
  128.       @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
  129.       @battleback_sprite.src_rect.set(0, 0, 640, 480)
  130.     end
  131.     # 刷新战斗者的活动块
  132.     for sprite in @enemy_sprites + @actor_sprites
  133.       sprite.update
  134.     end
  135.     # 刷新天气图形
  136.     #@weather.type = $game_screen.weather_type
  137.     #@weather.max = $game_screen.weather_max
  138.     #@weather.update
  139.     # 刷新图片活动块
  140.     for sprite in @picture_sprites
  141.       sprite.update
  142.     end
  143.     # 设置画面的色调与震动位置
  144.     @viewport1.tone = $game_screen.tone
  145.     @viewport1.ox = $game_screen.shake
  146.     # 设置画面的闪烁色
  147.     @viewport4.color = $game_screen.flash_color
  148.     # 刷新显示端口
  149.     @viewport1.update
  150.     @viewport2.update
  151.     @viewport4.update
  152.   end
  153. end
复制代码
这是修改后的脚本,
   if $duixiang == @actor_sprites[aa].battler
      p "尼玛终于P出来了"

P不出来XD。

点评

skill.id == 4有没有使用4号技能 还有就是有没有$duixiang = self? 我这边测试很正常啊(前面赋值$duixiang = $game_party.actors[0]正常,1号角色循环动画)  发表于 2012-7-20 20:29
name没有赋值啊= =||  发表于 2012-7-19 19:31
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-9 07:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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