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

Project1

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

[已经解决] 如何在战斗中循环播放动画而不影响战斗

[复制链接]

Lv2.观梦者

梦石
0
星屑
374
在线时间
139 小时
注册时间
2014-12-4
帖子
63
跳转到指定楼层
1
发表于 2014-12-31 15:13:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
就比如boss变身之后,自身周围有一层气场,这个气场就是反复播放一个动画实现的。

Lv3.寻梦者

梦石
0
星屑
1696
在线时间
761 小时
注册时间
2013-9-23
帖子
211

开拓者

2
发表于 2014-12-31 21:02:05 | 只看该作者
说来我没看明白你需要的是啥
外站有你需要的脚本,不过气场效果是气场效果,循环动画是循环动画……
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
374
在线时间
139 小时
注册时间
2014-12-4
帖子
63
3
 楼主| 发表于 2014-12-31 22:24:49 | 只看该作者
午睡的风铃 发表于 2014-12-31 21:02
说来我没看明白你需要的是啥
外站有你需要的脚本,不过气场效果是气场效果,循环动画是循环动画…… ...

战斗时的循环动画
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1696
在线时间
761 小时
注册时间
2013-9-23
帖子
211

开拓者

4
发表于 2014-12-31 22:49:58 | 只看该作者
目测循环的只有状态动画
RUBY 代码复制
  1. #==============================================================================
  2. # +++ MOG - Animation (1.5) +++
  3. # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  4. #  By Moghunter
  5. #  [url]http://www.atelier-rgss.com/RGSS/RGSS_VX_ACE.html[/url]
  6. #==============================================================================
  7. # 使数据库中的动画用途更广
  8. #==============================================================================
  9. # 写在技能、物品、状态的备注中 ID = 动画ID
  10. # ----------------------------------------
  11. # ● 命中动画 ●
  12. #   <Hit Animation = ID> 当攻击命中目标后的动画
  13. # ----------------------------------------
  14. # ● 启动动画① ●
  15. #   <Use Animation = ID> 攻击前的动画 可以理解为准备动作
  16. #                        此动画以使用者自己为目标 可以设计成攻击动作
  17. # ----------------------------------------
  18. # ● 启动动画② ●
  19. #   <Wait Use Animation = ID> 播放完启动动画后才会显示技能动画
  20. # ----------------------------------------
  21. # ● 状态动画<循环> ●
  22. #   <Loop Animation = ID> 写在状态备注中 当附加了此状态后会循环播放的动画
  23. # ----------------------------------------
  24. # ● 死亡动画 ●
  25. #   <Death Animation = ID> 濒死时播放的动画
  26. #==============================================================================
  27. module MOG_ANIMATION_PLUS
  28.   # 忽略等待时间的动画ID。
  29.   IGNORE_WAIT_TIME_ANIMATION_ID = [
  30.     1, 3, 21, 50,
  31.  
  32.   999]
  33.  
  34.   # 状态动画循环速度
  35.   STATES_LOOP_SPEED = 30
  36.  
  37.   # 升级动画
  38.   LEVEL_UP_ANIMATION = 2
  39. end
  40. #==============================================================================
  41. $imported = {} if $imported.nil?
  42. $imported[:mog_animation_plus] = true
  43. #==============================================================================
  44. # ■ Game Battler
  45. #==============================================================================
  46. class Game_Battler < Game_BattlerBase
  47.   attr_accessor :animation_loop
  48.   #--------------------------------------------------------------------------
  49.   # ● Initialize
  50.   #--------------------------------------------------------------------------
  51.   alias mog_animation_plus_initialize initialize
  52.   def initialize
  53.       mog_animation_plus_initialize
  54.       @animation_loop = []
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● Add New State
  58.   #--------------------------------------------------------------------------
  59.   alias mog_animation_plus_add_new_state add_new_state
  60.   def add_new_state(state_id)
  61.       mog_animation_plus_add_new_state(state_id)
  62.       check_loop_animation
  63.   end   
  64.   #--------------------------------------------------------------------------
  65.   # ● Erase State
  66.   #--------------------------------------------------------------------------
  67.   alias mog_animation_plus_erase_state erase_state
  68.   def erase_state(state_id)  
  69.       mog_animation_plus_erase_state(state_id)  
  70.       check_loop_animation
  71.   end  
  72.   #--------------------------------------------------------------------------
  73.   # ● Check Loop Animation
  74.   #--------------------------------------------------------------------------
  75.   def check_loop_animation
  76.       @animation_loop.clear
  77.       self.states.each_with_index do |i, index|
  78.       if i.note =~ /<Loop Animation = (\d+)>/i   
  79.          @animation_loop.push([$1.to_i,0, index + 1, true])
  80.       end
  81.       end
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● Item Apply
  85.   #--------------------------------------------------------------------------
  86.   alias mog_animation_plus_item_apply item_apply
  87.   def item_apply(user, item)
  88.       mog_animation_plus_item_apply(user, item)
  89.       execute_animation_plus_hit(item) if @result.success
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● Execute Animation Plus Hit
  93.   #--------------------------------------------------------------------------
  94.   def execute_animation_plus_hit(item)
  95.       return if item == nil
  96.       return if !SceneManager.scene_is?(Scene_Battle)
  97.       self.animation_id = $1.to_i if item.note =~ /<Hit Animation = (\d+)>/i   
  98.       if self.dead?
  99.          if self.is_a?(Game_Enemy)
  100.             battler = $data_enemies[self.enemy_id]
  101.          else
  102.             battler = $data_actors[self.id]
  103.          end  
  104.          self.animation_id = $1.to_i if
  105.                              battler.note =~ /<Death Animation = (\d+)>/i
  106.       end
  107.   end
  108. end
  109. #==============================================================================
  110. # ■ Sprite_Base
  111. #==============================================================================
  112. class Sprite_Base < Sprite  
  113.   #--------------------------------------------------------------------------
  114.   # ● Battle Animation?
  115.   #--------------------------------------------------------------------------
  116.   def battle_animation?
  117.       if @animation != nil
  118.          if MOG_ANIMATION_PLUS::
  119.             IGNORE_WAIT_TIME_ANIMATION_ID.include?(@animation.id)
  120.             return false
  121.          end
  122.          return true         
  123.       end  
  124.       return false
  125.   end
  126. end  
  127. #==============================================================================
  128. # ■ Sprite Battler
  129. #==============================================================================
  130. class Sprite_Battler < Sprite_Base
  131.   #--------------------------------------------------------------------------
  132.   # ● Update Position
  133.   #--------------------------------------------------------------------------
  134.   alias mog_animation_plus_update_position update_position
  135.   def update_position
  136.       mog_animation_plus_update_position
  137.       update_loop_animation if can_loop_animation?
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ● Can Loop Animation?
  141.   #--------------------------------------------------------------------------
  142.   def can_loop_animation?
  143.       return false if BattleManager.in_turn?
  144.       return false if self.animation?
  145.       return false if @battler.animation_loop.empty? or @battler.dead?  
  146.       if $imported[:mog_battle_hud_ex]
  147.       return false if
  148.          $game_message.visible and MOG_BATTLE_HUD_EX::MESSAGE_WINDOW_FADE_HUD
  149.       return false if !$game_temp.battle_hud_visible
  150.       end         
  151.       return true
  152.   end
  153.   #--------------------------------------------------------------------------
  154.   # ● Update Loop Animation
  155.   #--------------------------------------------------------------------------
  156.   def update_loop_animation
  157.       for i in @battler.animation_loop
  158.           next if !i[3]
  159.           i[1] += 1
  160.           if i[1] >= MOG_ANIMATION_PLUS::STATES_LOOP_SPEED
  161.              i[1] = 0 ; @battler.animation_id = i[0] ; i[3] = false
  162.              if i[2] >= @battler.animation_loop.size
  163.                 for i in @battler.animation_loop
  164.                     i[1] = 0 ; i[3] = true
  165.                 end                 
  166.             end  
  167.           end
  168.           break           
  169.       end        
  170.   end
  171.   #--------------------------------------------------------------------------
  172.   # ● Update Z Correction
  173.   #--------------------------------------------------------------------------
  174.   def update_z_correction
  175.       return if !@animation
  176.       @ani_sprites.each do |sprite| sprite.z = self.z + 1 end
  177.   end  
  178. end
  179. #==============================================================================
  180. # ■ Spriteset_Battle
  181. #==============================================================================
  182. class Spriteset_Battle
  183.   #--------------------------------------------------------------------------
  184.   # ● Animation?
  185.   #--------------------------------------------------------------------------
  186.   def animation?
  187.       battler_sprites.any? {|sprite| sprite.battle_animation? }
  188.   end  
  189. end
  190. #==============================================================================
  191. # ■ Scene Battle
  192. #==============================================================================
  193. class Scene_Battle < Scene_Base
  194.   #--------------------------------------------------------------------------
  195.   # ● Start
  196.   #--------------------------------------------------------------------------
  197.   alias mog_animation_plus_start start
  198.   def start
  199.       $game_party.members.each {|actor| actor.check_loop_animation }   
  200.       mog_animation_plus_start
  201.   end
  202.   #--------------------------------------------------------------------------
  203.   # ● Use Item
  204.   #--------------------------------------------------------------------------
  205.   alias mog_animation_plus_use_item use_item
  206.   def use_item
  207.       execute_cast_animation
  208.       mog_animation_plus_use_item        
  209.   end
  210.   #--------------------------------------------------------------------------
  211.   # ● Execute Cast Animation
  212.   #--------------------------------------------------------------------------
  213.   def execute_cast_animation
  214.       return if @subject.current_action.item == nil rescue return
  215.       item = @subject.current_action.item
  216.       if item.note =~ /<Use Animation = (\d+)>/i
  217.          execute_animation(@subject, $1.to_i,false)   
  218.       elsif item.note =~ /<Wait Use Animation = (\d+)>/i  
  219.          execute_animation(@subject, $1.to_i,true)   
  220.       end  
  221.   end  
  222.   #--------------------------------------------------------------------------
  223.   # ● Execute Animation
  224.   #--------------------------------------------------------------------------
  225.   def execute_animation(subject , anime_id = 0, wait_animation = false)
  226.       return if anime_id <= 0 or subject == nil
  227.       subject.animation_id = anime_id rescue nil
  228.       if wait_animation
  229.          duration = ($data_animations[anime_id].frame_max * 4) + 1
  230.          for i in 0..duration
  231.              @spriteset.update ; Graphics.update
  232.          end      
  233.       end   
  234.   end  
  235. end   
  236. #==============================================================================
  237. # ■ Game Actor
  238. #==============================================================================
  239. class Game_Actor < Game_Battler
  240.   #--------------------------------------------------------------------------
  241.   # ● Level UP
  242.   #--------------------------------------------------------------------------
  243.   alias mog_animation_plus_level_up level_up
  244.   def level_up
  245.        mog_animation_plus_level_up
  246.        self.animation_id = MOG_ANIMATION_PLUS::LEVEL_UP_ANIMATION if
  247.                            can_lvup_animation?
  248.   end
  249.   #--------------------------------------------------------------------------
  250.   # ● Can Lvup Animation
  251.   #--------------------------------------------------------------------------
  252.   def can_lvup_animation?
  253.       return false if !use_sprite?
  254.       return false if !SceneManager.scene_is?(Scene_Battle)
  255.       if $imported[:mog_battle_hud_ex]
  256.           return false if $game_message.visible and
  257.                           MOG_BATTLE_HUD_EX::MESSAGE_WINDOW_FADE_HUD
  258.           return false if !$game_temp.battle_hud_visible
  259.       end
  260.       return true
  261.   end
  262. end

评分

参与人数 1梦石 +1 收起 理由
taroxd + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
374
在线时间
139 小时
注册时间
2014-12-4
帖子
63
5
 楼主| 发表于 2015-1-2 22:53:30 | 只看该作者
午睡的风铃 发表于 2014-12-31 22:49
目测循环的只有状态动画
#============================================================================ ...

谢谢,可以生效,不过有个问题就是播放其他动画的时候那个状态动画会暂时停止。

点评

不客氣,能生效就好。腳本是別人寫的,作者分享了我才有機會搬過來,而且我對腳本一竅不通,所以能做到的僅僅是在確定了你需要它後貼出來。  发表于 2015-1-3 02:35
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22958
在线时间
8638 小时
注册时间
2011-12-31
帖子
3367
6
发表于 2015-1-5 13:47:37 | 只看该作者
アニメーションするエネミー(改 RGSS3仕様改変)
http://moomoo.asablo.jp/blog/2012/03/21/6383841
可設定敵人用3枚画象偱環播放
範例
rgss3_enemy_animation_renew2.zip (2.97 MB, 下载次数: 91)
# メモ欄に書くゆらゆら用ワード
  MEMO = "エネミーアニメーション"
  # エネミーのメモ欄にこの文字があると、ゆらゆらと動きます。
  # 他とかぶる場合は変えて下さい。

  # アニメーション設定
  ANIME = [
          [32,"グリフォン1","グリフォン2","グリフォン3","グリフォン2",10,1,"Audio/SE/wind1",80,100],
          [33,"ラミア1","ラミア2","ラミア3","ラミア2",25,0],
          ]
  # [
  # [1,"スライム1","スライム2","スライム3","スライム2",20,2,"Audio/SE/wind1",60,100],
  # [2,"こうもり1","コウモリⅡ","こーもり三","こうもり1",10,2,"Audio/SE/wind3",50,80],
  # [3,"魔王","デーモン","魔神","魔神ちゃん",50,0],
  # ]
  #
  # このように記述します。最初と最後の[]はそのままにしておいて下さい。
  #
  # [エネミーID,"画像1","画像2","画像3","行動不能時画像",アニメーション間隔,音番号,"SEファイル",音量,ピッチ]
  #
  # 本機能は「エネミーアニメーション」とは無関係で動くため、
  # エネミーのメモにゆらゆら用ワードがなくても構いません。
  #
  # ・エネミーIDは、アニメーションさせたい敵のIDです。グループIDではありません。
  #
  # ・画像1~3は、歩行グラフィックの感覚です。
  #   1,2,3それぞれ歩行グラフィックの左、中、右のような感じです。
  #   それをエネミーグラフィックで指定します。""で囲って下さい。
  #   途中で変身する場合、変身対象も動かす場合はそれにも適用して下さい。
  #   メニューのツール→素材管理→Graphics/Battlerにある画像を指定します。
  #
  # ・行動不能時画像
  #   麻痺など行動不能に陥ったエネミーはアニメーションを停止します。
  #   その時に使うエネミー画像を指定します。これも画像1~3と同様に、
  #   メニューのツール→素材管理→Graphics/Battlerにある画像を指定します。
  #   画像1~3の中と同じ画像でも、いっこうに構いません。""で囲って下さい。
  #     ちなみにその場で止まるので、飛行エネミーが落下するなどの動作はありません。
  #
  # ・アニメーション間隔
  #     歩行グラフィックのようにアニメーションをする場合の、
  #     画像が切り替わる間隔を指定します。適当な間隔をお試しあれ。
  #
  # ・音番号
  #     アニメーションは3段階に分かれているのですが、羽ばたいている音を出したい
  #     時などは、画像1~3のどの瞬間に音を出すかを決めます。その番号です。
  #     1と指定すれば、アニメーションが画像1の時に音を出します。
  #     1→2→3→2→1→2→3と繰り返すので、2に入れるとうるさいかも知れません。
  #     音が不要な場合は1,2,3以外の数字を入れて下さい。不要でもこの項目は必須です。
  #
  # ・SEファイル
  #   羽ばたく音などを鳴らしたい時に指定します。音番号が1~3の時だけ有効です。
  #     Audio/SE/~~とフルに書いて下さい。""で囲って下さい。
  #     音番号を1~3以外に指定した場合は、SEを指定しなくても構いません。
  #
  # ・音量
  #     SEの音量です。あまり大きいとやかましいです。控えめがいいでしょう。
  #     音番号が1~3の時だけ有効です。
  #     音番号を1~3以外に指定した場合は、音量を指定しなくても構いません。
  #
  # ・ピッチ
  #     SEのピッチです。音量と合わせ、サウンドテストにて
  #     アニメーションの間隔でサウンド名を連打してみると実感が湧くと思います。
  #     音番号が1~3の時だけ有効です。
  #     音番号を1~3以外に指定した場合は、ピッチを指定しなくても構いません。
  #
  # 行動不能になったら飛んでる敵が落ちるなどという面倒な処理はしていません。
  # また、ゆらゆら動くのと併用する場合、敵が多くなればなるほど重くなります。
  #
  # 設定記述ミスによるエラーチェックはしていません。

评分

参与人数 1星屑 +200 收起 理由
VIPArcher + 200 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
374
在线时间
139 小时
注册时间
2014-12-4
帖子
63
7
 楼主| 发表于 2015-1-5 18:42:00 | 只看该作者
tseyik 发表于 2015-1-5 13:47
アニメーションするエネミー(改 RGSS3仕様改変)
http://moomoo.asablo.jp/blog/2012/03/21/6383841
可設定 ...

一头雾水
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
208
在线时间
152 小时
注册时间
2011-4-22
帖子
52
8
发表于 2015-11-5 23:14:21 | 只看该作者
午睡的风铃 发表于 2014-12-31 22:49
目测循环的只有状态动画
#============================================================================ ...

朋友 你这个状态动画怎么用 我用了 但没有状态动画显示的

点评

我测试过了,你之前的横战脚本可以用,但别的横战就不知道了。  发表于 2015-11-6 01:10
<Loop Animation = ID>标记在状态的备注栏里,ID是动画ID。  发表于 2015-11-6 01:09
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
208
在线时间
152 小时
注册时间
2011-4-22
帖子
52
9
发表于 2015-11-6 01:28:16 | 只看该作者
午睡的风铃 发表于 2014-12-31 22:49
目测循环的只有状态动画
#============================================================================ ...

但我之前横版只能在待机时候显示  战斗时候显示不了  有没办法在战斗时也显示呢  你能否测试下
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
208
在线时间
152 小时
注册时间
2011-4-22
帖子
52
10
发表于 2015-11-6 01:28:48 | 只看该作者
午睡的风铃 发表于 2014-12-31 22:49
目测循环的只有状态动画
#============================================================================ ...

但我之前横版只能在待机时候显示  战斗时候显示不了  有没办法在战斗时也显示呢  你能否测试下
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 23:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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