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

Project1

 找回密码
 注册会员
搜索

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

查看数: 1640 | 评论数: 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
报告大大 虽然没有残影了 但是防卡效果失效了


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

RUBY 代码复制
  1. i=0
  2.     for sprite in @character_sprites
  3.       if sprite.character.is_a?(Game_Event)
  4.         if in_range?(sprite.character) or sprite.character.trigger == 3 or sprite.character.trigger == 4
  5.           sprite.update
  6.           i+=1
  7.         else
  8.           sprite.instance_eval do
  9.             if @ombrelist!=[]
  10.               for i in 1..@ombrelist.size
  11.                 # if @character.x >= 7 # character.x = @x -1
  12.                 if @ombrelist[i]!=nil
  13.                     @ombrelist[i].visible = false
  14.                 end
  15.                 # end
  16.               end
  17.             end
  18.           end
  19.         end
  20.       else
  21.         sprite.update
  22.         i+=1
  23.       end
  24.     end


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

评分

参与人数 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行改成:
RUBY 代码复制
  1. self.visible = !@character.transparent && @character.screen_x.between?(0, 640) && @character.screen_y.between?(0, 480) # 大致坐标,并不精确
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-23 15:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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