Project1

标题: 按键加速时,附加影子 [打印本页]

作者: 热带低气压    时间: 2008-5-10 05:31
标题: 按键加速时,附加影子
RT。。
[LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 3535    时间: 2008-5-10 05:34
是这个吗?
http://rpg.blue/web/htm/news108.htm [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 司马睿风    时间: 2008-5-10 05:34
影子可以实现,但是要用到注释,要修改这个脚本
  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. 現在キャラクターが立っている
  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 @shadow == 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
复制代码





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