Project1

标题: 【数据库 - 动画 - 非RM规格素材使用】寻找更简便处理手段 [打印本页]

作者: Ceopal    时间: 2013-8-21 10:28
标题: 【数据库 - 动画 - 非RM规格素材使用】寻找更简便处理手段
本帖最后由 Ceopal 于 2013-8-21 13:26 编辑


默认使用192X192 一张,横5张 ,纵20行

手上素材512X512,可视面积大概为中间192X192以内

如果PS为默认规格素材,流程是:每张素材裁剪512X512中间的192X192,然后拼成960 X  192*n的图片 ——这工作量……

有没有简便的办法利用非RM规格素材……改动脚本也许能实现,只使用素材中间192X192部分的胶片?





@fangyc  数据库无视你图片大小,它还是按规矩办事,只扫你图片0,0开始,横960,纵192*n的面积
作者: fangyc    时间: 2013-8-21 12:10
本帖最后由 fangyc 于 2013-8-21 12:18 编辑

我估计把Sprite_Base的194和195行删去,插入下面几行,估计可行
  1.       sw = sprite.bitmap.width / 5
  2.       sx = (sw - 192) / 2
  3.       sprite.src_rect.set(pattern % 5 * sw + sx,
  4.         pattern % 100 / 5 * sw + sx, 192, 192)
复制代码
但你仍需把512x512的素材拼成5行20列的才行。使用默认素材也没问题。

以防万一,贴上完整方法
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 设置动画的精灵
  3.   #     frame : 帧数据(RPG::Animation::Frame)
  4.   #--------------------------------------------------------------------------
  5.   def animation_set_sprites(frame)
  6.     cell_data = frame.cell_data
  7.     @ani_sprites.each_with_index do |sprite, i|
  8.       next unless sprite
  9.       pattern = cell_data[i, 0]
  10.       if !pattern || pattern < 0
  11.         sprite.visible = false
  12.         next
  13.       end
  14.       sprite.bitmap = pattern < 100 ? @ani_bitmap1 : @ani_bitmap2
  15.       sprite.visible = true
  16.       sw = sprite.bitmap.width / 5
  17.       sx = (sw - 192) / 2
  18.       sprite.src_rect.set(pattern % 5 * sw + sx,
  19.         pattern % 100 / 5 * sw + sx, 192, 192)
  20.       if @ani_mirror
  21.         sprite.x = @ani_ox - cell_data[i, 1]
  22.         sprite.y = @ani_oy + cell_data[i, 2]
  23.         sprite.angle = (360 - cell_data[i, 4])
  24.         sprite.mirror = (cell_data[i, 5] == 0)
  25.       else
  26.         sprite.x = @ani_ox + cell_data[i, 1]
  27.         sprite.y = @ani_oy + cell_data[i, 2]
  28.         sprite.angle = cell_data[i, 4]
  29.         sprite.mirror = (cell_data[i, 5] == 1)
  30.       end
  31.       sprite.z = self.z + 300 + i
  32.       sprite.ox = 96
  33.       sprite.oy = 96
  34.       sprite.zoom_x = cell_data[i, 3] / 100.0
  35.       sprite.zoom_y = cell_data[i, 3] / 100.0
  36.       sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
  37.       sprite.blend_type = cell_data[i, 7]
  38.     end
  39.   end

作者: Ceopal    时间: 2013-8-21 13:10
fangyc 发表于 2013-8-21 12:10
我估计把Sprite_Base的194和195行删去,插入下面几行,估计可行但你仍需把512x512的素材拼成5行20列的才行 ...

=  0 = 好像很难弄好的样子,我的数据库动画那里还是断掉的样子

你用这张图试试……

普通攻击png.rar

211.23 KB, 下载次数: 47


作者: fangyc    时间: 2013-8-21 13:19
Ceopal 发表于 2013-8-21 13:10
=  0 = 好像很难弄好的样子,我的数据库动画那里还是断掉的样子

你用这张图试试…… ...

呃……我身边目前没有RM
晚上回去看看吧~~
不过你用规格不同的图片,数据库设置那里没有问题吗?
作者: fangyc    时间: 2013-8-21 13:29
这样的话你怎么设置动画……




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1