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

Project1

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

请问如何让动画跟随NPC……

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
55
在线时间
0 小时
注册时间
2008-1-3
帖子
1512
跳转到指定楼层
1
发表于 2008-3-24 23:49:18 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

Lv1.梦旅人

很傻很天真

梦石
0
星屑
55
在线时间
3 小时
注册时间
2007-3-13
帖子
3667
6
发表于 2008-3-25 06:38:15 | 只看该作者
  1. #==============================================================================
  2. # ■ VX_非官方补丁 1 [动画显示相关修正]    —— By 诡异の猫
  3. #------------------------------------------------------------------------------
  4. #    注意: 此补丁包括官方补丁 VX_SP1
  5. #------------------------------------------------------------------------------
  6. #    补丁内容: 修正地图上播放动画(以画面为中心除外),动画跟随画面移动问题.                                         
  7. #==============================================================================
  8. class Sprite_Base < Sprite
  9.   #--------------------------------------------------------------------------
  10.   # ● 开始播放动画
  11.   #--------------------------------------------------------------------------
  12.   def start_animation(animation, mirror = false)
  13.     dispose_animation
  14.     @animation = animation
  15.     return if @animation == nil
  16.     @animation_mirror = mirror
  17.     @animation_duration = @animation.frame_max * 4 + 1
  18.     load_animation_bitmap
  19.     @animation_sprites = []
  20.     if @animation.position != 3 or not @@animations.include?(animation)
  21.       if @use_sprite
  22.         for i in 0..15
  23.           sprite = ::Sprite.new(viewport)
  24.           sprite.visible = false
  25.           @animation_sprites.push(sprite)
  26.         end
  27.         unless @@animations.include?(animation)
  28.           @@animations.push(animation)
  29.         end
  30.       end
  31.     end
  32.     update_animation
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   # ● 释放动画
  36.   #--------------------------------------------------------------------------
  37.   alias eb_sp1_dispose_animation dispose_animation
  38.   def dispose_animation
  39.     eb_sp1_dispose_animation
  40.     @animation_bitmap1 = nil
  41.     @animation_bitmap2 = nil
  42.   end
  43.   #--------------------------------------------------------------------------
  44.   # ● 设置动画活动块
  45.   #     frame : 画面数据 (RPG::Animation::Frame)
  46.   #--------------------------------------------------------------------------
  47.   def animation_set_sprites(frame)
  48.     cell_data = frame.cell_data
  49.     for i in 0..15
  50.       sprite = @animation_sprites[i]
  51.       next if sprite == nil
  52.       pattern = cell_data[i, 0]
  53.       if pattern == nil or pattern == -1
  54.         sprite.visible = false
  55.         next
  56.       end
  57.       if pattern < 100
  58.         sprite.bitmap = @animation_bitmap1
  59.       else
  60.         sprite.bitmap = @animation_bitmap2
  61.       end
  62.       sprite.visible = true
  63.       sprite.src_rect.set(pattern % 5 * 192,
  64.         pattern % 100 / 5 * 192, 192, 192)
  65.       position = @animation.position
  66.       if position == 3
  67.         if self.viewport != nil
  68.           sprite.x = self.viewport.rect.width / 2
  69.           sprite.y = self.viewport.rect.height / 2
  70.         else
  71.           sprite.x = 272
  72.           sprite.y = 208
  73.         end
  74.       else
  75.         sprite.x = self.x - self.ox + self.src_rect.width / 2
  76.         sprite.y = self.y - self.oy + self.src_rect.height / 2
  77.         sprite.y -= self.src_rect.height / 2 if position == 0
  78.         sprite.y += self.src_rect.height / 2 if position == 2
  79.       end
  80.       if @animation_mirror
  81.         sprite.x -= cell_data[i, 1]
  82.         sprite.y += cell_data[i, 2]
  83.         sprite.angle = (360 - cell_data[i, 4])
  84.         sprite.mirror = (cell_data[i, 5] == 0)
  85.       else
  86.         sprite.x += cell_data[i, 1]
  87.         sprite.y += cell_data[i, 2]
  88.         sprite.angle = cell_data[i, 4]
  89.         sprite.mirror = (cell_data[i, 5] == 1)
  90.       end
  91.       sprite.z = self.z + 300 + i
  92.       sprite.ox = 96
  93.       sprite.oy = 96
  94.       sprite.zoom_x = cell_data[i, 3] / 100.0
  95.       sprite.zoom_y = cell_data[i, 3] / 100.0
  96.       sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
  97.       sprite.blend_type = cell_data[i, 7]
  98.     end
  99.   end
  100.    
  101.   def x=(x)
  102.     sx = x - self.x
  103.     if sx != 0
  104.       if @animation_sprites != nil
  105.         for i in 0..15
  106.           @animation_sprites[i].x += sx
  107.         end
  108.       end
  109.     end
  110.     super
  111.   end
  112.   
  113.   def y=(y)
  114.     sy = y - self.y
  115.     if sy != 0
  116.       if @animation_sprites != nil
  117.         for i in 0..15
  118.           @animation_sprites[i].y += sy
  119.         end
  120.       end
  121.     end
  122.     super
  123.   end

  124. end
复制代码


这个能解决问题...我测试过了 我删掉这脚本动画就停在事件原位显示
插入后  动画始终显示在事件上
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

邪恶小龙包

梦石
0
星屑
55
在线时间
17 小时
注册时间
2006-5-22
帖子
7006

第2届短篇游戏比赛冠军第3届短篇游戏大赛小游戏及其他组冠军RMVX自由创作大赛冠军

5
发表于 2008-3-25 06:25:56 | 只看该作者
我记得之前已经有高手做了一个补丁修复这个问题的了。
虚无  堕落
回复 支持 反对

使用道具 举报

Lv1.梦旅人

很傻很天真

梦石
0
星屑
55
在线时间
3 小时
注册时间
2007-3-13
帖子
3667
4
发表于 2008-3-25 06:22:07 | 只看该作者
以下引用圣痕于2008-3-24 21:37:45的发言:

这个是VX的…………

也许在XP这是个漏洞     制作者认为这个是好处  而日本方面认为这在XP里是个BUG
所以官方修正了   拿XP的动画方面 和VX的对比一下 看看有何不同  也许能看出来
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
55
在线时间
0 小时
注册时间
2008-1-3
帖子
1512
3
 楼主| 发表于 2008-3-25 05:37:45 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

很傻很天真

梦石
0
星屑
55
在线时间
3 小时
注册时间
2007-3-13
帖子
3667
2
发表于 2008-3-25 05:27:53 | 只看该作者
的却......不过...不知道这时VX的BUG还是XP的BUG
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-10 07:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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