查看: 4932|回复: 11

[已经解决] 怎么让实现事件显示在图片的前面?

[复制链接]
梦石
0
星屑
1093
在线时间
881 小时
注册时间
2012-6-28
回帖
972
发表于 2013-9-4 00:14:39 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 没是的人 于 2013-9-5 20:27 编辑

正常情况下,显示图片会盖住事件,
如何让部分或者全部是事件显示在图片的前面(换句话说就是事件的行走图优先级比图片高)
比如用脚本实现:
1.事件里含有特定符号。比如“#商店npc”,在事件名称前+#号的事件会显示在图片的上面
2.部分地图id的事件,行走图会在图片上面
要求:
不要发双远景脚本什么的。。我有。。。
最好是外挂脚本,插入就能用的那种,实现的途径也最好是上面两种
报酬:
我自己来塞糖拉,@管理来给分拉,龙骑士还是比较可观的,谢谢肯帮忙的大师了
不追求华丽的商业素材;不依赖与自己运用能力不符的外挂脚本;不搞华而不实的无用噱头。
                    修改,使用最朴实的素材,融入自己的智慧做最好的游戏!
                                    点这里!暂不设加入门槛
         
                               我觉得我的优点是,会认真的画每一张地图。
梦石
0
星屑
136
在线时间
1050 小时
注册时间
2006-5-3
回帖
602
发表于 2013-9-4 14:04:33 | 显示全部楼层
很简单,把图片的Z值调低, 或者加一个Z值的控制变量
漏夏同人
《咱的夏天》
下载地址:http://tieba.baidu.com/p/2681607456
人员招募:http://rpg.blue/thread-339747-1-1.html
回复

使用道具 举报

梦石
0
星屑
266
在线时间
2355 小时
注册时间
2009-3-13
回帖
2257

贵宾

发表于 2013-9-4 14:09:56 | 显示全部楼层
首先是 Viewport 的Z值决定该 Viewport 里的所有精灵的优先级,在同一个 Viewport 里的话就是按精灵的Z值决定显示优先级了
你说的情况需要修改图片精灵的 Viewport ,让它们使用地图的那个
回复

使用道具 举报

梦石
0
星屑
50
在线时间
79 小时
注册时间
2007-6-23
回帖
147
发表于 2013-9-4 20:22:25 | 显示全部楼层
临时写了一个脚本,如有bug请指出~~
脚本的第3和第6行可以自行修改,用来调整显示的优先度
[pre lang="ruby" line="1"]#==============================================================================
# 设置不会被图片覆盖的地图id
NON_COVERED_MAP_ID = [1, 2, 3, 4]

# 设置不会被图片覆盖的事件名字前缀
NON_COVERED_EVT_NAME_PREF = "#"
#==============================================================================

#==============================================================================
class Game_Event < Game_Character
  #--------------------------------------------------------------------------
  # ● 获取事件名
  #--------------------------------------------------------------------------
  def name
    @event.name
  end
end

#==============================================================================
class Game_Pictures
  #--------------------------------------------------------------------------
  # ● 获取图片列表的尺寸
  #--------------------------------------------------------------------------
  def size
    @data.size
  end
end

#==============================================================================
class Sprite_Character < Sprite_Base
  #--------------------------------------------------------------------------
  # ● 更新位置
  #--------------------------------------------------------------------------
  alias non_covered_update_position update_position
  def update_position
    non_covered_update_position
    if NON_COVERED_MAP_ID.index($game_map.map_id) ||
      self.character.is_a?(Game_Event) &&
      self.character.name.index(NON_COVERED_EVT_NAME_PREF) == 0
      self.z += $game_map.screen.pictures.size + 1
    end
  end
end

#==============================================================================
class Sprite_Picture < Sprite
  #--------------------------------------------------------------------------
  # ● 更新位置
  #--------------------------------------------------------------------------
  alias non_covered_update_position update_position
  def update_position
    non_covered_update_position
    self.z += 100
  end
end

#==============================================================================
class Spriteset_Map
  #--------------------------------------------------------------------------
  # ● 更新图片精灵
  #--------------------------------------------------------------------------
  def update_pictures
    $game_map.screen.pictures.each do |pic|
      @picture_sprites[pic.number] ||= Sprite_Picture.new(@viewport1, pic)
      @picture_sprites[pic.number].update
    end
  end
end[/pre]

评分

参与人数 1星屑 +30 收起 理由
没是的人 + 30

查看全部评分

回复

使用道具 举报

梦石
0
星屑
1093
在线时间
881 小时
注册时间
2012-6-28
回帖
972
 楼主| 发表于 2013-9-4 22:00:22 | 显示全部楼层
fangyc 发表于 2013-9-4 20:22
临时写了一个脚本,如有bug请指出~~
脚本的第3和第6行可以自行修改,用来调整显示的优先度
#============== ...

有点小bug,拥有优先级的图块也会跑到图片的上方去,而且不受地图id的限制

点评

我也不知道设置了优先级的图块,z变成多少了  发表于 2013-9-4 22:34
不追求华丽的商业素材;不依赖与自己运用能力不符的外挂脚本;不搞华而不实的无用噱头。
                    修改,使用最朴实的素材,融入自己的智慧做最好的游戏!
                                    点这里!暂不设加入门槛
         
                               我觉得我的优点是,会认真的画每一张地图。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
79 小时
注册时间
2007-6-23
回帖
147
发表于 2013-9-5 07:44:21 | 显示全部楼层
恩…这个问题好像有点矛盾…设了优先级的图块本来就是显示在事件前面的吧?
要保证图块显示在事件上面,图片显示在事件下面,这貌似用同一个显示端口是没法实现的……
回复

使用道具 举报

梦石
0
星屑
1093
在线时间
881 小时
注册时间
2012-6-28
回帖
972
 楼主| 发表于 2013-9-5 09:22:49 | 显示全部楼层
fangyc 发表于 2013-9-5 07:44
恩…这个问题好像有点矛盾…设了优先级的图块本来就是显示在事件前面的吧?
要保证图块显示在事件上面,图 ...


你说的这个我明白,但是一个比较严重的问题是:
没有写到NON_COVERED_MAP_ID里的id的地图也出现了这种情况
也就是说,我不想用这个脚本的地图,里面的图块设置了优先级也会跑到图片的上面去。
希望大神再帮我改改,谢谢

另外。如果能改成提高事件z值来实现而不是降低图片z值的话就没这个问题
(虽然事件会跑到优先级图块的上面。但是我应用的场合里无所谓的)
不追求华丽的商业素材;不依赖与自己运用能力不符的外挂脚本;不搞华而不实的无用噱头。
                    修改,使用最朴实的素材,融入自己的智慧做最好的游戏!
                                    点这里!暂不设加入门槛
         
                               我觉得我的优点是,会认真的画每一张地图。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
79 小时
注册时间
2007-6-23
回帖
147
发表于 2013-9-5 09:39:25 来自手机 | 显示全部楼层
有最后一句话可能就好办了…
设了优先级的图块的Z值是多少似乎是内部定义好的,从脚本里看不到
你可以试着分别增加40行和53行的Z值,原来已经加上的值不要变,然后再往上增加
比如都再各加50看看是不是有效
这两行加的值必须是一样的
回复

使用道具 举报

梦石
0
星屑
1093
在线时间
881 小时
注册时间
2012-6-28
回帖
972
 楼主| 发表于 2013-9-5 09:45:56 | 显示全部楼层
fangyc 发表于 2013-9-5 09:39
有最后一句话可能就好办了…
设了优先级的图块的Z值是多少似乎是内部定义好的,从脚本里看不到
你可以试着 ...

好的,我能用家里电脑的时候试试,或者尝试把XXXX.z的值p出来

另外,第一个问题怎么解决呢?为什么会在不需要使用这个脚本的地图里也出现错位呢?

点评

突然想到是不是要把37行的||改成&&(手头没pc工具无法测试)  发表于 2013-9-5 09:48
不追求华丽的商业素材;不依赖与自己运用能力不符的外挂脚本;不搞华而不实的无用噱头。
                    修改,使用最朴实的素材,融入自己的智慧做最好的游戏!
                                    点这里!暂不设加入门槛
         
                               我觉得我的优点是,会认真的画每一张地图。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
79 小时
注册时间
2007-6-23
回帖
147
发表于 2013-9-5 10:13:06 来自手机 | 显示全部楼层
没是的人 发表于 2013-9-5 09:45
好的,我能用家里电脑的时候试试,或者尝试把XXXX.z的值p出来

另外,第一个问题怎么解决呢?为什么会在 ...

那是因为图片的显示端口从原来的viewport2改到跟事件同一层的viewport1了,否则不管怎么改z,veiwport2的图像永远都会显示在viewport1前。
解决第一个问题的话应该只要判断一下如果不在地图id列表里的话图片还是使用viewport2就行了,但是同样事件名前加了#的事件也会失效。
不过如果通过刚才说的改z值能解决的话,我觉得第一个问题不改也没关系…
现在手头没有工具,等我晚上回家再看看吧……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

在本版发帖返回顶部