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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: 迷糊的安安
打印 上一主题 下一主题

[已经过期] 【活动问题】如何制作上下分层的桥?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1058
在线时间
878 小时
注册时间
2012-6-28
帖子
1079
11
发表于 2012-10-9 11:36:41 | 只看该作者
yangff 发表于 2012-10-8 21:43
工程RMVA……
普通的桥是没有问题了……3格的一样搞,不过默认3格的桥在A组没办法设置通行度,弄到B组就好 ...

还是这个bug比较严重,可以从坡上直接下来

点评

屋顶属性掉不下来。  发表于 2012-11-17 16:20
不……我用错原件啦/A\  发表于 2012-10-9 15:20
看新的那个。  发表于 2012-10-9 15:19
[url=home.php?mod=space&username=acn00269]@acn00269[/url]是可以用空事件解决,但是每逢高坡就必须弄个空事件,实际吗?地图大的话岂不是满地的空事件?  发表于 2012-10-9 14:55
不就挡住了嘛  发表于 2012-10-9 12:29
不追求华丽的商业素材;不依赖与自己运用能力不符的外挂脚本;不搞华而不实的无用噱头。
                    修改,使用最朴实的素材,融入自己的智慧做最好的游戏!
                                    点这里!暂不设加入门槛
         
                               我觉得我的优点是,会认真的画每一张地图。
回复

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
369
在线时间
1605 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

12
发表于 2012-10-9 12:40:51 | 只看该作者
没是的人 发表于 2012-10-9 11:36
还是这个bug比较严重,可以从坡上直接下来

……你说呢,这个地方本来是不能通行的,硬被我弄成可以的,你可以用下面的那种图块做坡……

点评

原来是这样,不要改通行度了,还是用shift来画比较好  发表于 2012-10-9 14:57
哎呀,蛋疼什么的最有爱了
回复

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
369
在线时间
1605 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

13
发表于 2012-10-9 13:39:58 | 只看该作者
http://pan.baidu.com/share/link?shareid=74512&uk=201415192
稍微修改了十字交叉的实现……还有别吐槽那个可以走上高地的bug了,我用了自动元件/A\这个不会了。。跟随没问题……NPC的话我直接禁止走过十字交叉处了(其实NPC走过没问题,就怕和角色同时走过,还是一上一下的那种……)

点评

= = 我还是修改下题目好了,十字交叉立交桥貌似基本没法无BUG的实现?  发表于 2012-10-9 23:12
试试单单制作普通的桥呢,能让NPC完美行走的?  发表于 2012-10-9 23:11
交叉部分比上一作有改进,但是从桥底走上高地这个BUG不改进的话是无法真正用于游戏的。  发表于 2012-10-9 23:10
哎呀,蛋疼什么的最有爱了
回复

使用道具 举报

Lv3.寻梦者

伴侣:北岛谜烟

梦石
0
星屑
2887
在线时间
3547 小时
注册时间
2012-8-7
帖子
12181

贵宾

14
发表于 2012-10-9 23:04:10 | 只看该作者
本帖最后由 delv25 于 2012-10-9 23:07 编辑

魂淡你害我折腾了45分钟QAQ..
每个事件图块【桥】这个玩意,准备两个事件页
第一页优先级选择【在人物下方】
第二页选择在【在人物上方】
之后能照着视频里的思路,在走下方的时候,记得启用事件触发,令事件页处于【在人物上方】这个优先级
然后呢,也就像视频里的一样,在【人物上方】这个事件触发的必经之处,放上令事件页处于【在人物下方】这个优先级
这样之后呢,就会导致行走【在桥上】的时候,人物能随意的上下移动,并且逾越【桥】,
那么,就在之前【在人物上方】这个事件触发,也准备两个事件页,第一个事件页就是用不允许穿透,也就是优先级是【与人物同层】
第二个再启用令事件页处于【人物上方】,这样应该不会出问题了


度娘:http://pan.baidu.com/share/link?shareid=79484&uk=120447983

大雾………………我还特意看了教程……���

点评

依然不合格,似乎乃自己都没明白BUG的起因啊……触发桥下的某事件但不过桥,再上桥会掉下去。建议乃学习下沙发楼Yalisa的教程……  发表于 2012-10-9 23:23
真·弄好了……不会掉下去了,可以经过了  发表于 2012-10-9 23:11
更新完毕。。不会掉下去了。。但是偶尔放慢速度经过会卡住  发表于 2012-10-9 23:07
弄好了……  发表于 2012-10-9 23:07
BUG满满喔,桥上掉下去以后一切错乱。  发表于 2012-10-9 23:06
本人收不到提醒(点评|回复|@人),总之有事情到空间留言一起普通普通
回复

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
369
在线时间
1605 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

15
发表于 2012-10-10 08:22:10 | 只看该作者
没有十字的桥NPC随便走。。
http://pan.baidu.com/share/link?shareid=76223&uk=201415192
大概没问题。。

点评

发现一个bug,刚走下桥,也就是主角在区域4位置的时候不能转向,只能前进后退  发表于 2012-10-19 19:36
很好,你的范例我很喜欢!  发表于 2012-10-19 19:34
行走没问题了~但是NPC在桥上变得可以穿透并且无法对话,猜想你是把NPC移到人物上方去了?  发表于 2012-10-11 02:08
哎呀,蛋疼什么的最有爱了
回复

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
369
在线时间
1605 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

16
发表于 2012-10-11 09:15:14 | 只看该作者
本帖最后由 yangff 于 2012-10-11 10:03 编辑

不是……在桥上的时候我是以桥为最高优先级的,我是把人物移动到层次2去了。。
--------------------------------------------------------------------------------------------------------------
NPC 在桥上穿透的问题……要解决的话挺麻烦的。。RM的碰撞和z-index没有任何关系,都是单方面的碰撞,要实现的话直接用地球村的那个脚本吧/A\,懒得弄了。
哎呀,蛋疼什么的最有爱了
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1058
在线时间
878 小时
注册时间
2012-6-28
帖子
1079
17
发表于 2012-10-18 11:59:01 | 只看该作者
附上范例:
(百度网盘)
http://pan.baidu.com/share/link?shareid=89474&uk=3993422208
这个是为npc影响的问题做的另外一个
折腾了许多天终于做出来了
这个桥的素材非常考究,做这个桥,素材问题大于事件问题

@迷糊的安安

点评

我是来催详细步骤解说的……  发表于 2012-10-25 10:48
希望能详细说明一下每一步的思路,这个东西不是那么容易复制粘贴的,也不是看看范例就能轻易理解的。  发表于 2012-10-19 19:23
不追求华丽的商业素材;不依赖与自己运用能力不符的外挂脚本;不搞华而不实的无用噱头。
                    修改,使用最朴实的素材,融入自己的智慧做最好的游戏!
                                    点这里!暂不设加入门槛
         
                               我觉得我的优点是,会认真的画每一张地图。
回复

使用道具 举报

Lv4.逐梦者 (管理员)

砂上描绘的愿想

梦石
15
星屑
4014
在线时间
5070 小时
注册时间
2012-1-15
帖子
4617

开拓者贵宾短篇七成年组亚军剧作品鉴家

18
 楼主| 发表于 2012-10-18 12:49:55 | 只看该作者
没是的人 发表于 2012-10-18 11:59
附上范例:
(百度网盘)
http://pan.baidu.com/share/link?shareid=89474&uk=3993422208

好厉害!稍微试了下没发现BUG,和NPC的对话也正常
能说一下解决思路吗?提供一个制作教程,让别人也能做出来?

点评

类似于纯事件的方法制造双远景图,就是把一些有特殊效果的地图元件使用人物行走图而非地图图块表示。  发表于 2012-11-17 16:26
等明天周末了我找个时间写写  发表于 2012-10-19 19:29
若后退就皆成谎言。
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
432
在线时间
4175 小时
注册时间
2010-6-26
帖子
6474
19
发表于 2012-11-17 16:19:49 | 只看该作者

还有VA的场所移动是可以不淡入淡出的,利用视觉欺骗

本帖最后由 eve592370698 于 2012-11-17 23:28 编辑
没是的人 发表于 2012-10-8 23:40
5555犯规啊!主楼提的问题明明已经实现了的说。

安安考虑的好详细啊,话说这已经是3层了,不能 ...


死脑筋!不会用行走图代替元件图块吗?1个事件其实可以搞定的东西您可倒好,用了6个事件,要是桥再大一些使劲加事件不嫌麻烦吗?


另外地图的元件属性VA是可以通过事件变化的。

!$桥面技巧.png (17.69 KB, 下载次数: 19)

!$桥面技巧.png

点评

额。。。我不是从 省事件角度考虑的,我是从可扩展考虑的,不管多长都是这几个元件  发表于 2012-11-17 22:57
潜水,专心忙活三次元工作了……
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
21922
在线时间
8562 小时
注册时间
2011-12-31
帖子
3362
20
发表于 2013-9-11 23:38:18 | 只看该作者
本帖最后由 tseyik 于 2013-9-12 00:13 编辑

用區域可簡單設定
輸入脚本
設定方法如圖
交差点的圖塊設定為☆
十字橋要用事件和開関才能解决

  1. #==============================================================================
  2. # ■區域通行設定 for RGSS3 Ver1.00-β6
  3. # □作成者 kure
  4. #===============================================================================

  5. module KURE
  6.   module RegionPass
  7.     #初期設定
  8.     Z_Region = []
  9.    
  10.     #交差点區域
  11.     CROSS_Region = [63,59]
  12.    
  13.     #透明化區域
  14.     #指定しない場合は0を設定
  15.     TRANSPARENT_Region = 0
  16.   
  17.    
  18.     #プライオリティ設定タイプ
  19.     #(0 → キャラクターより下=90 キャラクターと同じ = 100 キャラクターより上 = 110)
  20.     #(1 → キャラクターより下=0 キャラクターと同じ = 100 キャラクターより上 = 200)
  21.     PRIORITY_TYPE = 1

  22.     #Z座標設定
  23.     Z_Region[60] = 400
  24.     Z_Region[62] = 300
  25.   end
  26. end   
  27.   
  28. #==============================================================================
  29. # ■ Game_Map
  30. #==============================================================================
  31. class Game_Map
  32.   #--------------------------------------------------------------------------
  33.   # ● 指定座標に存在するイベント(すり抜け以外)の配列取得
  34.   #--------------------------------------------------------------------------
  35.   def events_xy_ex(x, y, obj, z)
  36.     @events.values.select {|event| event.pos_nt?(x, y) && event.normal_priority? && event.same_height2?(obj,z)}
  37.   end
  38.   #--------------------------------------------------------------------------
  39.   # ● 指定座標に同じ高さのプレイヤーの存在するか取得
  40.   #--------------------------------------------------------------------------
  41.   def player_xy_ex(x, y, z)
  42.     if $game_player.x == x && $game_player.y == y && $game_player.screen_z == z
  43.       return true
  44.     end
  45.     return false
  46.   end
  47. end

  48. #==============================================================================
  49. # ■ Game_Event
  50. #==============================================================================
  51. class Game_Event < Game_Character
  52.   #--------------------------------------------------------------------------
  53.   # ● オブジェクト初期化(エイリアス再定義)
  54.   #     event : RPG::Event
  55.   #--------------------------------------------------------------------------
  56.   alias k_before_initialize initialize
  57.   def initialize(map_id, event)
  58.     k_before_initialize(map_id, event)
  59.     real_first_z
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   # ● リフレッシュ(エイリアス再定義)
  63.   #--------------------------------------------------------------------------
  64.   alias k_before_refresh refresh
  65.   def refresh
  66.     k_before_refresh
  67.     real_first_z
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # ● 初期 Z 座標の取得(追加定義)
  71.   #--------------------------------------------------------------------------
  72.   def real_first_z
  73.     unless @event.name
  74.       @first_z_pos = 90 + @priority_type * 10 if KURE::RegionPass::PRIORITY_TYPE == 0
  75.       @first_z_pos = @priority_type * 100 if KURE::RegionPass::PRIORITY_TYPE == 1
  76.     end
  77.     @event.name.match(/<Z座標\s?(\d+)\s?>/)
  78.       @first_z_pos = 90 + @priority_type * 10 if KURE::RegionPass::PRIORITY_TYPE == 0
  79.       @first_z_pos = @priority_type * 100 if KURE::RegionPass::PRIORITY_TYPE == 1
  80.     return unless $1
  81.     @first_z_pos = $1.to_i
  82.   end
  83.   #--------------------------------------------------------------------------
  84.   # ● 接触イベントの起動判定(再定義)
  85.   #--------------------------------------------------------------------------
  86.   def check_event_trigger_touch(x, y)
  87.     return if $game_map.interpreter.running?
  88.     if @trigger == 2 && $game_player.pos?(x, y)
  89.       start if !jumping? && normal_priority? && same_height?
  90.     end
  91.   end
  92.   #--------------------------------------------------------------------------
  93.   # ● プレイヤーとの衝突判定(フォロワーを含む)(再定義)
  94.   #--------------------------------------------------------------------------
  95.   def collide_with_player_characters?(x, y)
  96.     same_height? && normal_priority? && $game_player.collide?(x, y)
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # ● 同じ高さかどうか(プレイヤー用)
  100.   #--------------------------------------------------------------------------
  101.   def same_height?
  102.     return true if self.region_id == 0
  103.     return true if $game_player.region_id == 0
  104.     #Z座標±10の範囲内は同じ高さと判定する
  105.     case KURE::RegionPass::PRIORITY_TYPE
  106.     when 0
  107.       return true if self.screen_z - 11 < $game_player.screen_z && self.screen_z + 11 > $game_player.screen_z
  108.     when 1
  109.       return true if self.screen_z - 101 < $game_player.screen_z && self.screen_z + 101 > $game_player.screen_z
  110.     end
  111.     return false
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # ● 同じ高さかどうか(イベント用)
  115.   #--------------------------------------------------------------------------
  116.   def same_height2?(obj, z)
  117.     return true if self.region_id == 0
  118.     return true if obj.region_id == 0
  119.     #Z座標±10の範囲内は同じ高さと判定する
  120.     return true if self.screen_z - 11 < z && self.screen_z + 11 > z
  121.     return false
  122.   end
  123. end

  124. #==============================================================================
  125. # ■ Game_Player
  126. #==============================================================================
  127. class Game_Player < Game_Character
  128.   #--------------------------------------------------------------------------
  129.   # ● マップイベントの起動(再定義)
  130.   #     triggers : トリガーの配列
  131.   #     normal   : プライオリティ[通常キャラと同じ]かそれ以外か
  132.   #--------------------------------------------------------------------------
  133.   def start_map_event(x, y, triggers, normal)
  134.     $game_map.events_xy(x, y).each do |event|
  135.       if event.trigger_in?(triggers) && event.normal_priority? == normal && event.same_height?
  136.         event.start
  137.       end
  138.     end
  139.   end
  140. end

  141. #==============================================================================
  142. # ■ Game_CharacterBase
  143. #==============================================================================
  144. class Game_CharacterBase
  145.   attr_accessor :keep_region            # 區域ID保存
  146.   attr_accessor :region_z_pos           # Z座標保存
  147.   attr_accessor :first_z_pos            # 初期Z座標保存
  148.   attr_accessor :keep_trans             # 透明化設定保存
  149.   #--------------------------------------------------------------------------
  150.   # ● 通行可能判定(再定義)
  151.   #     d : 方向(2,4,6,8)
  152.   #--------------------------------------------------------------------------
  153.   def passable?(x, y, d)
  154.     x2 = $game_map.round_x_with_direction(x, d)
  155.     y2 = $game_map.round_y_with_direction(y, d)
  156.     return false unless $game_map.valid?(x2, y2)
  157.     return true if @through || debug_through?

  158.     #區域追加設定
  159.     pass = region_passable?(x, y, x2, y2)
  160.     return true if pass == 1
  161.     return false if pass == 2
  162.    
  163.     return false unless map_passable?(x, y, d)
  164.     return false unless map_passable?(x2, y2, reverse_dir(d))   
  165.     return false if collide_with_characters?(x2, y2)
  166.    
  167.     return true
  168.   end
  169.   #--------------------------------------------------------------------------
  170.   # ● 画面 Z 座標の取得(再定義)
  171.   #--------------------------------------------------------------------------
  172.   def screen_z
  173.     return @region_z_pos if @region_z_pos
  174.     return @first_z_pos if @first_z_pos
  175.     return @priority_type * 100
  176.   end
  177.   #--------------------------------------------------------------------------
  178.   # ● 初期 Z 座標の取得(追加定義)
  179.   #--------------------------------------------------------------------------
  180.   def real_first_z
  181.     @first_z_pos = nil
  182.   end
  183.   #--------------------------------------------------------------------------
  184.   # ● Z 座標の更新(追加定義)
  185.   #--------------------------------------------------------------------------
  186.   def refresh_z
  187.     id = $game_map.region_id(@x, @y)
  188.    
  189.     if @keep_trans
  190.       if id != KURE::RegionPass::TRANSPARENT_Region
  191.         @transparent = false
  192.         @keep_trans = false
  193.       end
  194.     else
  195.       if id == KURE::RegionPass::TRANSPARENT_Region && id != 0
  196.         @transparent = true
  197.         @keep_trans = true
  198.       end
  199.     end
  200.    
  201.     unless KURE::RegionPass::CROSS_Region.include?(id)
  202.       @region_z_pos = nil
  203.       if KURE::RegionPass::Z_Region[id]
  204.         @region_z_pos = KURE::RegionPass::Z_Region[id]
  205.         @first_z_pos = nil
  206.       end
  207.     end
  208.   end
  209.   #--------------------------------------------------------------------------
  210.   # ● 歩数増加(エイリアス再定義)
  211.   #--------------------------------------------------------------------------
  212.   alias k_before_increase_steps increase_steps
  213.   def increase_steps
  214.     refresh_z
  215.     k_before_increase_steps
  216.   end
  217.   #--------------------------------------------------------------------------
  218.   # ● ジャンプ時の更新(エイリアス再定義)
  219.   #--------------------------------------------------------------------------
  220.   alias k_before_update_jump update_jump
  221.   def update_jump
  222.     k_before_update_jump
  223.     if @jump_count == 0
  224.       refresh_z
  225.     end
  226.   end
  227.   #--------------------------------------------------------------------------
  228.   # ● 區域通行設定(再定義)
  229.   #--------------------------------------------------------------------------
  230.   def region_passable?(x, y, x2, y2)
  231.     #立体交差區域を取得
  232.     cross = KURE::RegionPass::CROSS_Region
  233.     #現在地と移動先の區域IDを取得
  234.     point1 = $game_map.region_id(x, y)
  235.     point2 = $game_map.region_id(x2, y2)
  236.    
  237.     #立体交差區域で無ければ區域IDを取得
  238.     unless cross.include?(point1)
  239.       @keep_region = point1
  240.     end
  241.    
  242.     #立体交差區域と関係移動ないは判定しない
  243.     unless cross.include?(point1)
  244.       unless cross.include?(point2)
  245.         return 0
  246.       end
  247.     end  
  248.    
  249.     #移動先に同じ高さのイベントがあれば通行できない
  250.     if $game_map.events_xy_ex(x2, y2, self, self.screen_z) != []
  251.       return 2
  252.     end
  253.    
  254.     #移動先が同じ高さのプレイヤーでも移動できない
  255.     return 0 if $game_map.player_xy_ex(x2, y2, self.screen_z)
  256.    
  257.     #移動先の侵入可能設定
  258.     if point2 != 0
  259.       return 0 if point1 == 0
  260.       return 1 if cross.include?(point2)
  261.       return 1 if point2 == @keep_region
  262.       return 2
  263.     end
  264.    
  265.     return 0
  266.   end
  267. end

  268. #==============================================================================
  269. # ■ Game_Interpreter
  270. #==============================================================================
  271. class Game_Interpreter
  272.   #--------------------------------------------------------------------------
  273.   # ● 區域ID取得
  274.   #--------------------------------------------------------------------------
  275.   def get_region_id
  276.     x = $game_player.x
  277.     y = $game_player.y
  278.     return $game_map.region_id(x, y)
  279.   end  
  280. end
复制代码
���
回复

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-4-27 01:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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