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

Project1

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

[已经解决] 水面倒影不能即使更新行走图【已经解决】

[复制链接]

Lv1.梦旅人

梦石
0
星屑
176
在线时间
359 小时
注册时间
2015-3-29
帖子
125
跳转到指定楼层
1
发表于 2015-7-11 16:08:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 Coder7447 于 2015-7-14 19:53 编辑

我用了水面倒影脚本制作ARPG

但是人物从普通行走图更换到攻击行走图 水面的倒影仍然是普通行走图

请问如何解决

脚本如下:
RUBY 代码复制
  1. =================================
  2.  
  3. module MINTO
  4.  
  5.   # 鏡床スクリプトを有効化 ( true で有効 / false で無効 )
  6.   #RGSS["Mirror_Tile"] = true
  7.   RGSS_SZ_A = true
  8. end
  9.  
  10. #if MINTO::RGSS["Mirror_Tile"] == true then
  11. if MINTO::RGSS_SZ_A == true then
  12.  
  13. #==============================================================================
  14. # ☆ カスタマイズ
  15. #------------------------------------------------------------------------------
  16. #   機能のカスタマイズを行うモジュールです。
  17. #==============================================================================
  18.  
  19. module MINTO
  20.  
  21.   # 鏡床のタイルとして扱う地形タグのID
  22.   Mirror_Tile_ID = 1
  23.  
  24. end
  25. #==============================================================================
  26. # ■ Sprite
  27. #------------------------------------------------------------------------------
  28. #  スプライト表示を扱う組み込みクラスです。
  29. #==============================================================================
  30.  
  31. class Sprite
  32.   #--------------------------------------------------------------------------
  33.   # ● 複製の作成
  34.   #--------------------------------------------------------------------------
  35.   def dup
  36.     # 各データをコピー
  37.     sprite = Sprite.new(self.viewport)
  38.     sprite.bitmap = self.bitmap
  39.     sprite.x = self.x
  40.     sprite.y = self.y
  41.     sprite.z = self.z
  42.     sprite.visible = self.visible
  43.     sprite.ox = self.ox
  44.     sprite.oy = self.oy + 10 #- 5
  45.     sprite.angle = self.angle
  46.     sprite.mirror = self.mirror
  47.     sprite.opacity = self.opacity
  48.     sprite.blend_type = self.blend_type
  49.     sprite.color = self.color
  50.     rect = self.src_rect
  51.     sprite.src_rect.set(rect.x, rect.y, rect.width, rect.height)
  52.     sprite.zoom_x = 1#1#self.zoom_x
  53.     sprite.zoom_y = 1.1#self.zoom_y
  54.     #rate = 0.8#1#.2
  55.     #self.zoom_x = 0.8
  56.     #self.zoom_y = 0.8#rate  
  57.     return sprite
  58.   end
  59. end
  60. #==============================================================================
  61. # ■ Sprite_Character
  62. #------------------------------------------------------------------------------
  63. #  キャラクター表示用のスプライトです。
  64. #   Game_Character クラスのインスタンスを監視し、
  65. #   スプライトの状態を自動的に変化させます。
  66. #==============================================================================
  67.  
  68. class Sprite_Character < RPG::Sprite
  69.   #--------------------------------------------------------------------------
  70.   # ● 解放
  71.   #--------------------------------------------------------------------------
  72.   def dispose
  73.     # 影が存在する場合
  74.     if @shadow_sprite != nil then
  75.       # 影を解放
  76.       @shadow_sprite.bitmap.dispose
  77.       @shadow_sprite.dispose
  78.     end
  79.     # スーパークラスを実行
  80.     super
  81.   end
  82.   #--------------------------------------------------------------------------
  83.   # ● 地形タグの取得
  84.   #--------------------------------------------------------------------------
  85.   def terrain_tag(x, y)
  86.     # 地形タグの情報を返す
  87.     return $game_map.terrain_tag(x, y)
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● 影の作成
  91.   #--------------------------------------------------------------------------
  92.   def shadow_set
  93.     # 影用のスプライトを生成
  94.     @shadow_sprite = self.dup
  95.     # 座標を調節する
  96.     @shadow_sprite.y = self.y - (self.oy / 6)
  97.     @shadow_sprite.z = self.z
  98.     # 色を白っぽくする
  99.     @shadow_sprite.tone.red = 64
  100.     @shadow_sprite.tone.green = 64
  101.     @shadow_sprite.tone.blue = 64
  102.     # 半透明にする
  103.     @shadow_sprite.opacity = 160
  104.     # 180度回転させる
  105.     @shadow_sprite.angle = 180
  106.     # 左右を反転させる
  107.     @shadow_sprite.mirror = (not self.mirror == true)
  108.   end
  109.   #--------------------------------------------------------------------------
  110.   # ● 影の更新
  111.   #--------------------------------------------------------------------------
  112.   def update_shadow
  113.     # キャラクターの現在位置を取得
  114.     x = @character.x
  115.     y = @character.y
  116.     # 元々影が存在しない場合
  117.     if @shadow_sprite == nil then
  118.       # 処理を終了
  119.       return
  120.     end
  121.     # 下のタイルの地形タグのIDが Mirror_Tile_ID 以外の場合
  122.     if ( terrain_tag(x, y+1) != MINTO::Mirror_Tile_ID or  terrain_tag(x, y+1) == 2 ) then
  123.       # 影を不可視状態にする
  124.       @shadow_sprite.visible = false
  125.       # 処理を終了
  126.       return
  127.     # 下のタイルの地形タグのIDが Mirror_Tile_ID の場合
  128.     else
  129.       # Y座標補正値を初期化する
  130.       @y_plus = 0
  131.        if @character.name.include?("NotShadow")
  132.             @shadow_sprite.visible = false
  133.             return
  134.          end
  135.     end
  136.     # 各情報を更新する
  137.     rect = self.src_rect
  138.     @shadow_sprite.src_rect.set(rect.x, rect.y, rect.width, rect.height)
  139.     @shadow_sprite.x = self.x
  140.     @shadow_sprite.y = self.y - (self.oy / 6) + @y_plus + 10
  141.     @shadow_sprite.opacity = self.opacity - 95
  142.     @shadow_sprite.z = self.z - 1
  143.     @shadow_sprite.visible = self.visible
  144.   end
  145.   #--------------------------------------------------------------------------
  146.   # ● フレーム更新
  147.   #    alias : update_MINTO_Mirror_Tile
  148.   #--------------------------------------------------------------------------
  149.   alias update_MINTO_Mirror_Tile update
  150.   def update
  151.     # 元の処理を実行
  152.     update_MINTO_Mirror_Tile
  153.     # まだ影を作成していない場合
  154.     if @shadow == nil then
  155.       # キャラクターがイベントの場合
  156.       if @character.is_a?(Game_Event) == true then
  157.         # 有効なイベントの場合
  158.         if @character.list != nil then
  159.           # 最初の内容が注釈の場合
  160.         #  if @character.list[0].code == 108 then
  161.             # 注釈の内容が「影描写」だった場合
  162.           #  if @character.list[0].parameters == ["影描画"] then
  163.               # 影を作成
  164.               shadow_set
  165.               # 作成済みフラグをオン
  166.               @shadow = true
  167.            # end
  168.          # end
  169.         end
  170.       # キャラクターがプレイヤーの場合
  171.       else
  172.         # 影を作成
  173.         shadow_set
  174.         # 作成済みフラグをオン
  175.         @shadow = true
  176.       end
  177.     end
  178.     # 影を更新
  179.     update_shadow
  180.   end
  181. end
  182.  
  183. end
  
在内存有限的时光里, 容纳未见的可能。

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
2
发表于 2015-7-11 17:49:25 | 只看该作者
本帖最后由 恐惧剑刃 于 2015-7-11 17:50 编辑

def update_shadow下面加上
  1. if self.bitmap != @shadow_sprite.bitmap
  2.       @shadow_sprite.dispose
  3.       @shadow_sprite = nil
  4.       shadow_set
  5.     end
复制代码

点评

完美解决了 ~ O(∩_∩)~~~ 撒花~~~赞~~~~谢谢剑大~~  发表于 2015-7-11 20:18

评分

参与人数 1星屑 +150 收起 理由
RyanBern + 150 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-1 14:13

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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