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列的才行。使用默认素材也没问题。

以防万一,贴上完整方法
[pre lang="ruby" line="1"]  #--------------------------------------------------------------------------
  # ● 设置动画的精灵
  #     frame : 帧数据(RPG::Animation::Frame)
  #--------------------------------------------------------------------------
  def animation_set_sprites(frame)
    cell_data = frame.cell_data
    @ani_sprites.each_with_index do |sprite, i|
      next unless sprite
      pattern = cell_data[i, 0]
      if !pattern || pattern < 0
        sprite.visible = false
        next
      end
      sprite.bitmap = pattern < 100 ? @ani_bitmap1 : @ani_bitmap2
      sprite.visible = true
      sw = sprite.bitmap.width / 5
      sx = (sw - 192) / 2
      sprite.src_rect.set(pattern % 5 * sw + sx,
        pattern % 100 / 5 * sw + sx, 192, 192)
      if @ani_mirror
        sprite.x = @ani_ox - cell_data[i, 1]
        sprite.y = @ani_oy + cell_data[i, 2]
        sprite.angle = (360 - cell_data[i, 4])
        sprite.mirror = (cell_data[i, 5] == 0)
      else
        sprite.x = @ani_ox + cell_data[i, 1]
        sprite.y = @ani_oy + cell_data[i, 2]
        sprite.angle = cell_data[i, 4]
        sprite.mirror = (cell_data[i, 5] == 1)
      end
      sprite.z = self.z + 300 + i
      sprite.ox = 96
      sprite.oy = 96
      sprite.zoom_x = cell_data[i, 3] / 100.0
      sprite.zoom_y = cell_data[i, 3] / 100.0
      sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
      sprite.blend_type = cell_data[i, 7]
    end
  end[/pre]
作者: Ceopal    时间: 2013-8-21 13:10
fangyc 发表于 2013-8-21 12:10
我估计把Sprite_Base的194和195行删去,插入下面几行,估计可行但你仍需把512x512的素材拼成5行20列的才行 ...

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

你用这张图试试……

作者: 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! X5.0