Project1

标题: 有誰能給個水面倒影的腳本啊 [打印本页]

作者: 1491968808    时间: 2014-9-15 13:03
标题: 有誰能給個水面倒影的腳本啊
就是站在水旁邊,會有水中倒影的效果。
作者: 上贺茂润    时间: 2014-9-15 13:05
喜狼狼游戏里有
作者: 1491968808    时间: 2014-9-15 13:06
上贺茂润 发表于 2014-9-15 13:05
喜狼狼游戏里有

什麼是喜狼狼?
作者: 上贺茂润    时间: 2014-9-15 13:09
杨村大崩坏
作者: kangxi0109    时间: 2014-9-15 16:20
  1. #◆◇◆◇◆ 鏡床スクリプト ver 1.02 ◇◆◇◆◇
  2. #  サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/
  3. #   by みんと

  4. =begin

  5. 更新履历

  6. ver 1.02
  7. 修改在特定条件下错误落下的错误。

  8. ver 1.01
  9. 修改雪碧解放时的错误。

  10. 说明

  11. 现在人物正站着在数据库·图块·地形标志,需倒影的设为“1”
  12. 「一步下」的瓷砖当地形标签,特定的数值的情况,
  13. 在一步下的瓷砖上映出人物的半透明的影像。

  14. 适合水面等演出。

  15. 活动的情况,「最初的」实行内容
  16. 由于「注释」,注释的内容只有影描写的情况,同样地映出。
  17. 没有设立的情况不[没] 映出因为,
  18. 想映出的活动在只有请设立。

  19. 引进地点的注意
  20. 用别名被构成因为,
  21. 尽可能下的方面引进,请给我。
  22. =end

  23. #==============================================================================
  24. # ☆ MINTO
  25. #------------------------------------------------------------------------------
  26. #   様々なフラグを扱うメインモジュールです。
  27. #==============================================================================

  28. module MINTO
  29.   
  30.   # 鏡床スクリプトを有効化 ( true で有効 / false で無効 )
  31.   #RGSS["Mirror_Tile"] = true
  32.   RGSS_SZ_A = true
  33. end

  34. #if MINTO::RGSS["Mirror_Tile"] == true then
  35. if MINTO::RGSS_SZ_A == true then

  36. #==============================================================================
  37. # ☆ カスタマイズ
  38. #------------------------------------------------------------------------------
  39. #   機能のカスタマイズを行うモジュールです。
  40. #==============================================================================

  41. module MINTO
  42.   
  43.   # 鏡床のタイルとして扱う地形タグのID
  44.   Mirror_Tile_ID = 1
  45.   
  46. end
  47. #==============================================================================
  48. # ■ Sprite
  49. #------------------------------------------------------------------------------
  50. #  スプライト表示を扱う組み込みクラスです。
  51. #==============================================================================

  52. class Sprite
  53.   #--------------------------------------------------------------------------
  54.   # ● 複製の作成
  55.   #--------------------------------------------------------------------------
  56.   def dup
  57.     # 各データをコピー
  58.     sprite = Sprite.new(self.viewport)
  59.     sprite.bitmap = self.bitmap
  60.     sprite.x = self.x
  61.     sprite.y = self.y
  62.     sprite.z = self.z
  63.     sprite.visible = self.visible
  64.     sprite.ox = self.ox
  65.     sprite.oy = self.oy
  66.     sprite.angle = self.angle
  67.     sprite.mirror = self.mirror
  68.     sprite.opacity = self.opacity
  69.     sprite.blend_type = self.blend_type
  70.     sprite.color = self.color
  71.     rect = self.src_rect
  72.     sprite.src_rect.set(rect.x, rect.y, rect.width, rect.height)
  73.     sprite.zoom_x = self.zoom_x
  74.     sprite.zoom_y = self.zoom_y
  75.     return sprite
  76.   end
  77. end
  78. #==============================================================================
  79. # ■ Sprite_Character
  80. #------------------------------------------------------------------------------
  81. #  キャラクター表示用のスプライトです。
  82. #   Game_Character クラスのインスタンスを監視し、
  83. #   スプライトの状態を自動的に変化させます。
  84. #==============================================================================

  85. class Sprite_Character < RPG::Sprite
  86.   #--------------------------------------------------------------------------
  87.   # ● 解放
  88.   #--------------------------------------------------------------------------
  89.   def dispose
  90.     # 影が存在する場合
  91.     if @shadow_sprite != nil then
  92.       # 影を解放
  93.       @shadow_sprite.bitmap.dispose
  94.       @shadow_sprite.dispose
  95.     end
  96.     # スーパークラスを実行
  97.     super
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ● 地形タグの取得
  101.   #--------------------------------------------------------------------------
  102.   def terrain_tag(x, y)
  103.     # 地形タグの情報を返す
  104.     return $game_map.terrain_tag(x, y)
  105.   end
  106.   #--------------------------------------------------------------------------
  107.   # ● 影の作成
  108.   #--------------------------------------------------------------------------
  109.   def shadow_set
  110.     # 影用のスプライトを生成
  111.     @shadow_sprite = self.dup
  112.     # 座標を調節する
  113.     @shadow_sprite.y = self.y - (self.oy / 6)
  114.     @shadow_sprite.z = self.z
  115.     # 色を白っぽくする
  116.     @shadow_sprite.tone.red = 64
  117.     @shadow_sprite.tone.green = 64
  118.     @shadow_sprite.tone.blue = 64
  119.     # 半透明にする
  120.     @shadow_sprite.opacity = 160
  121.     # 180度回転させる
  122.     @shadow_sprite.angle = 180
  123.     # 左右を反転させる
  124.     @shadow_sprite.mirror = (not self.mirror == true)
  125.   end
  126.   #--------------------------------------------------------------------------
  127.   # ● 影の更新
  128.   #--------------------------------------------------------------------------
  129.   def update_shadow
  130.     # キャラクターの現在位置を取得
  131.     x = @character.x
  132.     y = @character.y
  133.     # 元々影が存在しない場合
  134.     if @shadow_sprite == nil then
  135.       # 処理を終了
  136.       return
  137.     end
  138.     # 下のタイルの地形タグのIDが Mirror_Tile_ID 以外の場合
  139.     if terrain_tag(x, y+1) != MINTO::Mirror_Tile_ID then
  140.       # 影を不可視状態にする
  141.       @shadow_sprite.visible = false
  142.       # 処理を終了
  143.       return
  144.     # 下のタイルの地形タグのIDが Mirror_Tile_ID の場合
  145.     else
  146.       # Y座標補正値を初期化する
  147.       @y_plus = 0
  148.     end
  149.     # 各情報を更新する
  150.     rect = self.src_rect
  151.     @shadow_sprite.src_rect.set(rect.x, rect.y, rect.width, rect.height)
  152.     @shadow_sprite.x = self.x
  153.     @shadow_sprite.y = self.y - (self.oy / 6) + @y_plus
  154.     @shadow_sprite.opacity = self.opacity - 95
  155.     @shadow_sprite.z = self.z - 1
  156.     @shadow_sprite.visible = self.visible
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ● フレーム更新
  160.   #    alias : update_MINTO_Mirror_Tile
  161.   #--------------------------------------------------------------------------
  162.   alias update_MINTO_Mirror_Tile update
  163.   def update
  164.     # 元の処理を実行
  165.     update_MINTO_Mirror_Tile
  166.     # まだ影を作成していない場合
  167.     if [url=home.php?mod=space&uid=31758]@Shadow[/url] == nil then
  168.       # キャラクターがイベントの場合
  169.       if @character.is_a?(Game_Event) == true then
  170.         # 有効なイベントの場合
  171.         if @character.list != nil then
  172.           # 最初の内容が注釈の場合
  173.           if @character.list[0].code == 108 then
  174.             # 注釈の内容が「影描写」だった場合
  175.             if @character.list[0].parameters == ["影描写"] then
  176.               # 影を作成
  177.               shadow_set
  178.               # 作成済みフラグをオン
  179.               @shadow = true
  180.             end
  181.           end
  182.         end
  183.       # キャラクターがプレイヤーの場合
  184.       else
  185.         # 影を作成
  186.         shadow_set
  187.         # 作成済みフラグをオン
  188.         @shadow = true
  189.       end
  190.     end
  191.     # 影を更新
  192.     update_shadow
  193.   end
  194. end

  195. end
复制代码

作者: 1491968808    时间: 2014-9-15 17:55
本帖最后由 1491968808 于 2014-9-15 17:57 编辑
kangxi0109 发表于 2014-9-15 16:20


183行出錯了,這個適合1.02嗎?而且在普通狀態下會有殘影。
作者: kangxi0109    时间: 2014-9-15 19:13
本帖最后由 kangxi0109 于 2014-9-15 19:16 编辑
1491968808 发表于 2014-9-15 17:55
183行出錯了,這個適合1.02嗎?而且在普通狀態下會有殘影。


183行应该是
if @Shadow == nil then
用代码打“@”的话貌似会出现奇怪的东西   
作者: 1491968808    时间: 2014-9-15 19:20
本帖最后由 1491968808 于 2014-9-15 19:25 编辑
kangxi0109 发表于 2014-9-15 19:13
183行应该是
if @Shadow == nil then
用代码打“@”的话貌似会出现奇怪的东西    ...


為什麼離開水面後依然有幾秒鐘的殘影?
我把工程給你。

測試.rar

254.3 KB, 下载次数: 72

前邊有兩個商店事件


作者: kangxi0109    时间: 2014-9-15 19:27
1491968808 发表于 2014-9-15 19:20
為什麼離開水面後依然有幾秒鐘的殘影?


几秒?!我这测试完全没这个问题,你测试的时候是不是太卡了?
这个脚本有个不足就是如果边缘不是平整的不是很和谐
作者: 1491968808    时间: 2014-9-15 19:31
kangxi0109 发表于 2014-9-15 19:27
几秒?!我这测试完全没这个问题,你测试的时候是不是太卡了?
这个脚本有个不足就是如果边缘不是平整的 ...

邊緣不平整是什麼意思呢?給張圖吧。
作者: kangxi0109    时间: 2014-9-15 19:52
1491968808 发表于 2014-9-15 19:31
邊緣不平整是什麼意思呢?給張圖吧。

...算了,我把自己改的镜子+倒影脚本给你算了...
原来那个脚本的刷新有点问题,我这个的话刚靠近影子会渐渐出现,远离时就会马上消失

镜子 倒影.zip (272.61 KB, 下载次数: 81)
作者: 1491968808    时间: 2014-9-15 20:01
kangxi0109 发表于 2014-9-15 19:52
...算了,我把自己改的镜子+倒影脚本给你算了...
原来那个脚本的刷新有点问题,我这个的话刚靠 ...

側面似乎無倒影?
作者: 弗雷德    时间: 2014-9-16 09:51
https://rpg.blue/thread-366674-1-1.html这是俺之前委托SION写的,效果很惊艳哦。
作者: kangxi0109    时间: 2014-9-19 19:18
本帖最后由 kangxi0109 于 2014-9-19 19:48 编辑
1491968808 发表于 2014-9-15 20:01
你能再幫忙把這個倒影改成一接近水面就會出現倒影的嗎


这样的话,在脚本对应位置修改成下面这个样子就行了,应该在203行附近:
RUBY 代码复制
  1. @shadow_sprite.x = self.x
  2.     @shadow_sprite.y = self.y - (self.oy / 6) * 3 - @y_plus
  3.     @shadow_sprite.opacity = self.opacity - 95  #修改这里,去除开始的#号
  4.     @shadow_sprite.z = self.z - 2
  5. #--------------------------------------删了↓
  6.     #if @shadow_sprite.opacity < 160
  7.     # 半透明にする
  8.       #@shadow_sprite.opacity += 4
  9.       #@wait_count = 2
  10.    # end
  11. #--------------------------------------删了↑
  12.     @shadow_sprite.visible = self.visible

如果你不觉得人物走到水边影子才忽然间出现有问题的话




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1