\\ 求大神帮助 影子脚本和局部刷新地图起了冲突

查看数: 1893 | 评论数: 8 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2015-2-10 20:54

正文摘要:

本帖最后由 风晴生 于 2015-2-10 21:11 编辑 如题 我用了 局部刷新事件脚本 和  太阳精灵影子脚本 可是当角色走出一个屏幕(640*480)时 就会出现影子残留的情况 如图:       &nb ...

回复

风晴生 发表于 2015-2-11 01:29:07
本帖最后由 风晴生 于 2015-2-11 01:31 编辑
taroxd 发表于 2015-2-10 21:00
虽然我没看出图片中问题在哪儿,但是看你的问题描述,你可以试试看把影子脚本的121行改成:
self.visible = ...


大大 问一下 这个self.visible  可视化 如果不可视了 就代表不刷新了吗   我刚测试一下 发现直接把 self.visible = false 然后用影子脚本 即使没有影子也会造成消耗FPS的情况 请问大大该如何解决呢

点评

无解  发表于 2015-2-11 07:36
风晴生 发表于 2015-2-11 01:23:25
taroxd 发表于 2015-2-10 21:46
那么把这段改成这样呢?(对于超出范围的事件,把影子消去)

    i=0

这个修改的 影子的刷新 也是只刷新屏幕的吗  为什么FPS掉的这么多呢
风晴生 发表于 2015-2-10 21:57:46
本帖最后由 风晴生 于 2015-2-10 22:32 编辑
taroxd 发表于 2015-2-10 21:46
那么把这段改成这样呢?(对于超出范围的事件,把影子消去)

    i=0


问题解决了 多谢
taroxd 发表于 2015-2-10 21:46:44
本帖最后由 taroxd 于 2015-2-10 21:54 编辑
风晴生 发表于 2015-2-10 21:41
报告大大 虽然没有残影了 但是防卡效果失效了


那么把这段改成这样呢?(对于超出范围的事件,把影子消去)

[pre lang="ruby"]    i=0
    for sprite in @character_sprites
      if sprite.character.is_a?(Game_Event)
        if in_range?(sprite.character) or sprite.character.trigger == 3 or sprite.character.trigger == 4
          sprite.update
          i+=1
        else
          sprite.instance_eval do
            if @ombrelist!=[]
              for i in 1..@ombrelist.size
                # if @character.x >= 7 # character.x = @x -1
                if @ombrelist!=nil
                    @ombrelist.visible = false
                end
                # end
              end
            end
          end
        end
      else
        sprite.update
        i+=1
      end
    end [/pre]

如果这样还是不能解决,那么就建议——
  不要把这两个脚本一起用了……

评分

参与人数 1星屑 +100 梦石 +1 收起 理由
hys111111 + 100 + 1 认可答案

查看全部评分

风晴生 发表于 2015-2-10 21:41:55
taroxd 发表于 2015-2-10 21:29
重新看了一遍,感觉问题可能出在超出范围的事件没有刷新。可能是因为事件超出范围之后没有调用刷新。我建 ...

报告大大 虽然没有残影了 但是防卡效果失效了

点评

6L有编辑。再不行我就真没辙了  发表于 2015-2-10 21:55
taroxd 发表于 2015-2-10 21:29:16
风晴生 发表于 2015-2-10 21:10
谢谢大大的回复  原理好像是加入了判断影子生成的条件 虽然判定范围有效了 但还是没有解决问题 影子还是 ...

重新看了一遍,感觉问题可能出在超出范围的事件没有刷新。可能是因为事件超出范围之后没有调用刷新。我建议名字叫做 update 的东西还是每帧调用一次最好。

将事件刷新脚本的 133~143 行替换为
  1. @character_sprites.each { |s| s.update }
复制代码
试试看呢?

不过这样可能会失去一些防卡脚本的意义呢……
风晴生 发表于 2015-2-10 21:10:30
taroxd 发表于 2015-2-10 21:00
虽然我没看出图片中问题在哪儿,但是看你的问题描述,你可以试试看把影子脚本的121行改成:
self.visible = ...

谢谢大大的回复  原理好像是加入了判断影子生成的条件 虽然判定范围有效了 但还是没有解决问题 影子还是残留     这是我刚截的图      您看看 我在帖子中补充
taroxd 发表于 2015-2-10 21:00:30
本帖最后由 taroxd 于 2015-2-10 21:03 编辑

虽然我没看出图片中问题在哪儿,但是看你的问题描述,你可以试试看把影子脚本的121行改成:
[pre lang="ruby"]self.visible = !@character.transparent && @character.screen_x.between?(0, 640) && @character.screen_y.between?(0, 480) # 大致坐标,并不精确[/pre]

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部