查看: 96|回复: 0

[转载发布] 同时显示多个动画(可以重叠) 2.17更新

[复制链接]
  • TA的每日心情
    开心
    5 天前
  • 签到天数: 33 天

    连续签到: 1 天

    [LV.5]常住居民I

    2022

    主题

    32

    回帖

    7144

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    0
    卡币
    5074
    OK点
    16
    积分
    7144
    发表于 同元一千年八月六日(秋) | 显示全部楼层 |阅读模式

    截图


    工程截图

    事件截图(第二张图有点问题,不过影响不大。)


    地图效果,多动画(可以重叠)

    地图效果,"全屏动画只显示一次"


    战斗(附加了状态)


    使用还原后



    脚本



    基础

    RUBY 代码
    [code]classRPG::Sprite < ::Sprite
      def initialize(viewport = nil)
        super(viewport)
        @_whiten_duration = 0
        @_appear_duration = 0
        @_escape_duration = 0
        @_collapse_duration = 0
        @_damage_duration = 0
        #@_animation_duration = 0
        @_blink = false
        @_animation = []
        @_animation_hit = []
        @_animation_duration = []
        @_animation_sprites = []
        @_loop_animation = []
        @_loop_animation_sprites = []
        @_loop_animation_index = []
      end
      def animation(animation, hit)
        #dispose_animation
        returnif animation == nil
        @_animation  0
          @_whiten_duration -= 1
          self.color.alpha = 128 - (16 - @_whiten_duration) * 10
        end
        if@_appear_duration > 0
          @_appear_duration -= 1
          self.opacity = (16 - @_appear_duration) * 16
        end
        if@_escape_duration > 0
          @_escape_duration -= 1
          self.opacity = 256 - (32 - @_escape_duration) * 10
        end
        if@_collapse_duration > 0
          @_collapse_duration -= 1
          self.opacity = 256 - (48 - @_collapse_duration) * 6
        end
        if@_damage_duration > 0
          @_damage_duration -= 1
          case@_damage_duration
          when38..39
            @_damage_sprite.y -= 4
          when36..37
            @_damage_sprite.y -= 2
          when34..35
            @_damage_sprite.y += 2
          when28..33
            @_damage_sprite.y += 4
          end
          @_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
          if@_damage_duration == 0
            dispose_damage
          end
        end
        if@_animation.size > 0and(Graphics.frame_count % 2 == 0)
          for i in0...@_animation_duration.size
            @_animation_duration -= 1
          end
          update_animation
        end
        if@_loop_animation.size > 0and(Graphics.frame_count % 2 == 0)
          update_loop_animation
          for i in0...@_loop_animation_index.size
            @_loop_animation_index += 1
            @_loop_animation_index %= @_loop_animation.frame_max
          end
        end
        if@_blink
          @_blink_count = (@_blink_count + 1) % 32
          if@_blink_count < 16
            alpha = (16 - @_blink_count) * 6
          else
            alpha = (@_blink_count - 16) * 6
          end
          self.color.set(255, 255, 255, alpha)
        end
        @@_animations.clear
      end
      def update_animation
        for i in0...@_animation_duration.size
          if@_animation_duration

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    天天去同能,天天有童年!
    回复 论坛版权

    使用道具 举报

    ahome_bigavatar:guest
    ahome_bigavatar:welcomelogin
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2024-5-3 11:06 , Processed in 0.048065 second(s), 47 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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