Project1

标题: 求助,关于不同分割图片切换时pattern的问题 [打印本页]

作者: 54000123    时间: 2014-7-23 09:28
标题: 求助,关于不同分割图片切换时pattern的问题
某个角色的移动图和待机图的分割数不一致,为4和12
我不想用事件做移动和待机效果= =因为那样变换的时候总有点延迟。。。所以我修改了相关的脚本

#--------------------------------------------------------------------------
  # ● 更新动画计数
  #--------------------------------------------------------------------------
  def update_anime_count
    if moving? && @walk_anime
      @anime_count += 1.5
    elsif @step_anime || @pattern != @original_pattern
      @anime_count += 1
    end
      if @character_name.include?("天野")
         if moving?
          @character_name = "天野^4"
          @move_speed = 3.5
         else
          @character_name = "天野w"
          @move_speed = 1
         end
      end
  end
  #--------------------------------------------------------------------------
  # ● 更新动画图案
  #--------------------------------------------------------------------------
  def update_anime_pattern
    if !@step_anime && @stop_count > 0
      @pattern = @original_pattern
    elsif @character_name.include?("w")
      @pattern = (@pattern + 1) % 12
    else
       @pattern = (@pattern + 1) % 4
    end
  end
end

但是这样就出现了一个问题,当待机部分pattern大于4之后,因为切换的模式是先变换到变换后的图形,pattern不变,然后在把pattern初始,但是因为行走图没有4以上的pattern技术,就会出现一帧空白,然后才跳到第一个分割部分。。。
之前做成事件特发现过这个问题,两边分割不同的话,即使是事件那种制定pattern的变换也有空白出现。
于是我打算在变换的时候把pattern强行限制到0,再变换。

  #--------------------------------------------------------------------------
  def update_anime_pattern
    if !@step_anime && @stop_count > 0
      @pattern = @original_pattern                             ←
    elsif @character_name.include?("w")
      @pattern = (@pattern + 1) % 12
    else
       @pattern = (@pattern + 1) % 4
    end
  end
end

  #-------------------------------------------------------------------------
  # ● 更新源位图(Source Bitmap)
  #--------------------------------------------------------------------------
  def update_bitmap
    if graphic_changed?
      @tile_id = @character.tile_id
      @character_name = @character.character_name
      @character_index = @character.character_index
      if @tile_id > 0
        set_tile_bitmap
      else
        set_character_bitmap
      end
    end
  end


  #--------------------------------------------------------------------------
  # ● 判定图像是否被更改
  #--------------------------------------------------------------------------
  def graphic_changed?
    @tile_id != @character.tile_id ||
    @character_name != @character.character_name ||
    @character_index != @character.character_index
  end

我找了下相关的脚本,试图在这三个地方进行通过插入 @pattern = 0来达到效果,但是都失败了= =空白依然存在OTZ
现在完全没有思路了OTZ能不能请大大们带带路OTZ
不想把行走和待机做成一致不是因为懒或者不会= =而且想到这次弄这样以后遇到没有替换方法时怎么办= =反正迟早要解决的


作者: taroxd    时间: 2014-7-23 09:35
首先,吐槽一下:@character_name.include?("w") 这一行简直就是在作死…… 好歹也用个<w>之类的吧。字母w误杀一片啊。

待机部分pattern大于4之后,因为切换的模式是先变换到变换后的图形,pattern不变,然后在把pattern初始

不是吧?我记得所有游戏数据的更新都是早于画面更新的。

说实话,我并不是很明白你要达到什么样的效果。
不过我觉得,你看一看 Sprite_Character#update_src_rect 的定义或许会对你有些启发。
作者: 54000123    时间: 2014-7-23 09:53
taroxd 发表于 2014-7-23 09:35
首先,吐槽一下:@character_name.include?("w") 这一行简直就是在作死…… 好歹也用个之类的吧。字母w误杀 ...


现在的情况的这样的,因为待机是分割的12帧,而行走只是分割的4帧,当待机的帧数大于4帧以后进行行走,就会出现空白一下,然后才是行走的第一帧的情况。。。我想的是能不能在变换的过程中就把pattern的数变为0。
update_src_rect的部分我再去看一下,但我本身是个半桶水可能还是要麻烦下大大你了OTZ
作者: taroxd    时间: 2014-7-23 10:16
54000123 发表于 2014-7-23 09:53
现在的情况的这样的,因为待机是分割的12帧,而行走只是分割的4帧,当待机的帧数大于4帧以后进行行走,就 ...

我还是不太明白的说=。=

你先自己看看 update_src_rect ,还是搞不明白的话上范例吧
作者: 54000123    时间: 2014-7-23 11:13
taroxd 发表于 2014-7-23 10:16
我还是不太明白的说=。=

你先自己看看 update_src_rect ,还是搞不明白的话上范例吧 ...

抱歉大大,看是懂了一点,但是还是想不出什么实际的办法OTZ
还是要麻烦大大了OTZ

问题是在面朝下的时候,等出现闭眼的动作(帧数过四)后移动,会空白一帧,然后才出现行走图

似乎直接回复不能添加附件,我放在楼下了OTZ
作者: 54000123    时间: 2014-7-23 11:17
taroxd 发表于 2014-7-23 10:16
我还是不太明白的说=。=

你先自己看看 update_src_rect ,还是搞不明白的话上范例吧 ...

我传百度了OTZ
http://pan.baidu.com/s/1bn1X759
麻烦大大了
作者: taroxd    时间: 2014-7-23 13:21
54000123 发表于 2014-7-23 11:17
我传百度了OTZ
http://pan.baidu.com/s/1bn1X759
麻烦大大了


天野w.png填满试试看……

把这张图右下角的部分也画上相同的行走图试试看。这个PS一下应该不是很麻烦

初步估计是你 src_rect 选中的范围没有选对,选到空白区域了
作者: 54000123    时间: 2014-7-23 13:41
taroxd 发表于 2014-7-23 13:21
天野w.png填满试试看……

把这张图右下角的部分也画上相同的行走图试试看。这个PS一下应该不是很麻烦

大大辛苦了。
已经填满做过实验了,还是存在那个问题。。。暂时没填满是因为我解决了再继续动工。。总感觉是跳到了行走图不存在的分割OTZ
作者: taroxd    时间: 2014-7-23 13:43
54000123 发表于 2014-7-23 13:41
大大辛苦了。
已经填满做过实验了,还是存在那个问题。。。暂时没填满是因为我解决了再继续动工。。总感 ...

我追踪过 pattern 的变化,他并不是连续变化的,可能是你要实现眨眼的功能吧。

我也试过固定 pattern,发现一样会出现这个问题。

我不知道你改了哪些脚本…… 总之我无能为力啦~
作者: 54000123    时间: 2014-7-23 13:49
taroxd 发表于 2014-7-23 13:43
我追踪过 pattern 的变化,他并不是连续变化的,可能是你要实现眨眼的功能吧。

我也试过固定 pattern, ...

麻烦大大了,实在不行我也就只有动下待机了- =
因为以前做某个游戏4X4待机的时候,因为待机没有动作,就只是一个方向做了1Z,那时就发现了会有空白这个问题= =后来做了实验发现是会先跳到更改图形的原图形pattern位置 ,然后再初始化= =不过当时因为都是4X4所以把待机填满就没事了,所以也没有注意OTZ
这个工程原脚本改动的地方就是1楼那两处= =




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