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

Project1

 找回密码
 注册会员
搜索
查看: 2262|回复: 4
打印 上一主题 下一主题

[已经解决] 这个是怎么做

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
91 小时
注册时间
2012-8-28
帖子
117
跳转到指定楼层
1
发表于 2013-9-13 17:10:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
走近才出现的路是怎么做的

点评

如果只是地图的一部分是这样的,那可以用事件做,如果所有地图都是你说的那样,我就不知道了  发表于 2013-9-13 17:27

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21636
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

2
发表于 2013-9-13 21:02:18 | 只看该作者

请挂代理:
http://himeworks.wordpress.com/2013/09/01/region-fog/

点评

跟我想到一樣的.....  发表于 2013-9-14 07:26
喵呜喵?,,我是tim,,,去看看我的帖子,你能否解答呢。  发表于 2013-9-13 22:04

评分

参与人数 1星屑 +60 收起 理由
熊喵酱 + 60 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
135 小时
注册时间
2013-6-10
帖子
29
3
发表于 2013-9-14 03:35:05 | 只看该作者
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22963
在线时间
8639 小时
注册时间
2011-12-31
帖子
3367
4
发表于 2013-9-14 20:57:50 | 只看该作者
本帖最后由 tseyik 于 2013-9-15 22:12 编辑

  1. #==============================================================================
  2. # ■リージョン可視領域設定 for RGSS3 Ver1.02-β
  3. # □作成者 kure
  4. #===============================================================================

  5. module KURE
  6.   module RegionSee
  7.     REGION_SEE = []
  8.     NORMAL_REGION = []
  9.     NORMAL_MAP = []
  10.    
  11.     #適用エリア設定
  12.       #アクターを中心として消去するタイルイベントの範囲を設定します。
  13.       AREA_X = 30
  14.       AREA_Y = 30
  15.       
  16.       #この設定を適用しないMAPIDの設定
  17.       NORMAL_MAP = []
  18.    
  19.     #通常リージョン
  20.     #設定されたリージョンは設定が適用されない
  21.     NORMAL_REGION = []
  22.    
  23.     #複数リージョン設定
  24.     #REGION_SEE[リージョンID] = [見えるリージョン]
  25.     REGION_SEE[6] = [1,2]
  26.     REGION_SEE[7] = [2,3]
  27.     REGION_SEE[8] = [3,4]
  28.     REGION_SEE[9] = [4,5]
  29.    
  30.     #リージョン未設定のマスの処理
  31.    
  32.       #表示設定
  33.       # 0 = リージョン設定マスに乗れば見えなくなる
  34.       # 1 = 常に見える
  35.       ZERO_REGION_SEE_MODE = 0
  36.    
  37.       #動作処理
  38.       # 0 = 他のリージョンと同じ動作(リージョン未設定のみ見える)
  39.       # 1 = 全てのマスが見える
  40.       ZERO_REGION_ACT_MODE = 1
  41.    
  42.   end
  43. end


  44. #==============================================================================
  45. # ■ Sprite_Character
  46. #==============================================================================
  47. class Sprite_Character < Sprite_Base
  48.   #--------------------------------------------------------------------------
  49.   # ● その他の更新(再定義)
  50.   #--------------------------------------------------------------------------
  51.   def update_other
  52.     self.opacity = @character.opacity
  53.     self.blend_type = @character.blend_type
  54.     self.bush_depth = @character.bush_depth
  55.     self.visible = [email protected] && [email protected]
  56.   end
  57. end

  58. #==============================================================================
  59. # ■ Game_Map
  60. #==============================================================================
  61. class Game_Map
  62.   attr_accessor :keep_map_data            # マップデータ保存
  63.   #--------------------------------------------------------------------------
  64.   # ● セットアップ(エイリアス再定義)
  65.   #--------------------------------------------------------------------------
  66.   alias k_transcolor_before_setup setup
  67.   def setup(map_id)
  68.     k_transcolor_before_setup(map_id)
  69.     @keep_map_data = @map.data.clone
  70.   end
  71.   #--------------------------------------------------------------------------
  72.   # ● 指定座標にあるタイル ID の取得(エイリアス再定義)
  73.   #--------------------------------------------------------------------------
  74.   alias k_transcolor_before_tile_id tile_id
  75.   def tile_id(x, y, z)
  76.     if @keep_map_data
  77.       return @keep_map_data[x, y, z] if @keep_map_data[x, y, z]
  78.       return 0 unless @keep_map_data[x, y, z]
  79.     end
  80.    
  81.     k_transcolor_before_tile_id(x, y, z)
  82.   end
  83. end

  84. #==============================================================================
  85. # ■ Game_CharacterBase
  86. #==============================================================================
  87. class Game_CharacterBase
  88.   attr_accessor :transparent2              # 透明状態  
  89. end

  90. #==============================================================================
  91. # ■ Game_Player
  92. #==============================================================================
  93. class Game_Player < Game_Character
  94.   attr_accessor :keep_passed_region            # リージョンID保存
  95.   #--------------------------------------------------------------------------
  96.   # ● 歩数増加(エイリアス再定義)
  97.   #--------------------------------------------------------------------------
  98.   alias k_transcolor_before_increase_steps increase_steps
  99.   def increase_steps
  100.     refresh_region_tile(@x, @y) unless KURE::RegionSee::NORMAL_MAP.include?($game_map.map_id)
  101.     k_transcolor_before_increase_steps
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ● 場所移動の実行(エイリアス再定義)
  105.   #--------------------------------------------------------------------------
  106.   alias k_transcolor_before_perform_transfer perform_transfer
  107.   def perform_transfer
  108.     keep_x = @new_x
  109.     keep_y = @new_y
  110.     keep_id = @new_map_id
  111.     keep_trans = 0
  112.     keep_trans = 1 if transfer?
  113.    
  114.     k_transcolor_before_perform_transfer

  115.     if keep_trans == 1
  116.       refresh_region_tile(keep_x, keep_y) unless KURE::RegionSee::NORMAL_MAP.include?(keep_id)
  117.     end
  118.   end
  119.   #--------------------------------------------------------------------------
  120.   # ● タイルの更新(追加定義)
  121.   #--------------------------------------------------------------------------
  122.   def refresh_region_tile(x,y)   
  123.     id = $game_map.region_id(x, y)
  124.    
  125.     if @keep_passed_region != id
  126.       @keep_passed_region = id
  127.       width = $game_map.width
  128.       height = $game_map.height
  129.       
  130.       
  131.       x1 = [0,@x - (KURE::RegionSee::AREA_X / 2).to_i].max
  132.       x2 = [@x + (KURE::RegionSee::AREA_X / 2).to_i,width].min
  133.       y1 = [0,@y - (KURE::RegionSee::AREA_Y / 2).to_i].max
  134.       y2 = [@y + (KURE::RegionSee::AREA_Y / 2).to_i,height].min
  135.       
  136.       rigion_area = Array.new
  137.       #指定リージョンのエリアのみを取得
  138.       for w in x1..x2
  139.         for h in y1..y2
  140.           see = 0
  141.           event = $game_map.events_xy(w,h)
  142.           see = 1 if $game_map.region_id(w, h) == @keep_passed_region
  143.          
  144.           #リージョンの設定
  145.           if KURE::RegionSee::REGION_SEE[@keep_passed_region]
  146.             see = 1 if KURE::RegionSee::REGION_SEE[@keep_passed_region].include?($game_map.region_id(w, h))
  147.           end
  148.          
  149.           #0リージョン上では全てが見える設定の場合
  150.           if @keep_passed_region == 0
  151.             see = 1 if KURE::RegionSee::ZERO_REGION_ACT_MODE == 1
  152.           end
  153.          
  154.           see = 1 if KURE::RegionSee::NORMAL_REGION.include?(@keep_passed_region)
  155.             
  156.           #0リージョンは常に見える設定の場合
  157.           if $game_map.region_id(w, h) == 0
  158.             see = 2 if KURE::RegionSee::ZERO_REGION_SEE_MODE == 1
  159.           end
  160.          
  161.           rigion_area.push([w,h,see]) if see != 0
  162.          
  163.           #一旦タイルイベントを消去
  164.           $game_map.data[w, h, 0] = 0
  165.           $game_map.data[w, h, 1] = 0
  166.           $game_map.data[w, h, 2] = 0
  167.             
  168.           event.each do |ev|
  169.             ev.transparent2 = true
  170.           end
  171.          
  172.         end
  173.       end
  174.       
  175.       #見える範囲を適用する
  176.       rigion_area.each do |area|
  177.         if area[2] == 1
  178.           s_x_area1 = [0,area[0] - 1].max
  179.           s_x_area2 = [width,area[0] + 1].min
  180.           s_y_area1 = [0,area[1] - 1].max
  181.           s_y_area2 = [height,area[1] + 1].min
  182.         
  183.           for sw in s_x_area1..s_x_area2
  184.             for sy in s_y_area1..s_y_area2
  185.               #タイルイベントを復活
  186.               event = $game_map.events_xy(sw,sy)
  187.               $game_map.data[sw, sy, 0] = $game_map.keep_map_data[sw, sy, 0]
  188.               $game_map.data[sw, sy, 1] = $game_map.keep_map_data[sw, sy, 1]
  189.               $game_map.data[sw, sy, 2] = $game_map.keep_map_data[sw, sy, 2]
  190.             
  191.               event.each do |ev|
  192.                   ev.transparent2 = false
  193.               end
  194.               
  195.             end
  196.           end
  197.          
  198.         elsif area[2] == 2
  199.           sw = area[0]
  200.           sy = area[1]
  201.           event = $game_map.events_xy(sw,sy)
  202.           $game_map.data[sw, sy, 0] = $game_map.keep_map_data[sw, sy, 0]
  203.           $game_map.data[sw, sy, 1] = $game_map.keep_map_data[sw, sy, 1]
  204.           $game_map.data[sw, sy, 2] = $game_map.keep_map_data[sw, sy, 2]
  205.             
  206.           event.each do |ev|
  207.             ev.transparent2 = false
  208.           end
  209.         
  210.         end
  211.       end
  212.          
  213.     end
  214.   end
  215.   
  216. end
复制代码

评分

参与人数 1星屑 +50 收起 理由
熊喵酱 + 50 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
91 小时
注册时间
2012-8-28
帖子
117
5
 楼主| 发表于 2013-9-16 10:34:06 | 只看该作者
xTsukihime 发表于 2013-9-14 03:35
Demo: https://www.dropbox.com/sh/sz6mpw5n2d6zxi2/BXeCvyKOB2/Demo/Region%20Fog%20Demo.zip

你发的是什么,是你的裤链吧
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-18 05:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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