Project1

标题: 影子 [打印本页]

作者: 迅雷進    时间: 2008-7-29 03:59
标题: 影子

  1. #==============================================================================
  2. # ■ Sprite_Shadow_Module
  3. #------------------------------------------------------------------------------
  4. #  影子
  5. #   By 迅雷進
  6. #==============================================================================

  7. module Sprite_Shadow_Module
  8.   #--------------------------------------------------------------------------
  9.   # ● 解放
  10.   #--------------------------------------------------------------------------
  11.   def dispose
  12.     # 当影子出现时
  13.     if @character_shadow != nil then
  14.       # 解放影子
  15.       @character_shadow.bitmap.dispose
  16.       @character_shadow.dispose
  17.     end
  18.     super
  19.   end
  20.   #--------------------------------------------------------------------------
  21.   # ● 影子的作成
  22.   #--------------------------------------------------------------------------
  23.   def character_shadow_set
  24.     # 生成影子使用的脚本
  25.     @character_shadow = Sprite.new(self.viewport)
  26.     # 显示影子
  27.     @character_shadow.bitmap = RPG::Cache.picture("shadow")
  28.     # 影子在这里设定透明度
  29.     @character_shadow.opacity = (self.opacity / 2) - 32
  30.     # 刷新影子
  31.     update_character_shadow
  32.   end
  33.   #--------------------------------------------------------------------------
  34.   # ● 影子的更新
  35.   #--------------------------------------------------------------------------
  36.   def update_character_shadow
  37.     # 根本影子不存在的情况
  38.     if @character_shadow == nil then
  39.       # 处理完毕
  40.       return
  41.     end
  42.     # 更新各信息
  43.     @character_shadow.x = self.x - self.ox
  44.     @character_shadow.y = self.y - (self.oy / 2.5)   # 角色和影子之间的距离
  45.     @character_shadow.visible = (self.visible and @character_name != "")
  46.     @character_shadow.opacity = (self.opacity / 2) - 32
  47.   end
  48. end
  49. #==============================================================================
  50. # ■ Game_Event
  51. #------------------------------------------------------------------------------
  52. #  处理事件的类。条件判断、事件页的切换、并行处理、执行事件功能
  53. # 在 Game_Map 类的内部使用。
  54. #==============================================================================

  55. class Game_Event < Game_Character
  56.   #--------------------------------------------------------------------------
  57.   # ● 公開定义实例变量
  58.   #--------------------------------------------------------------------------
  59.   attr_reader   :event                    # 事件
  60. end
  61. #==============================================================================
  62. # ■ Sprite_Character
  63. #------------------------------------------------------------------------------
  64. #  角色显示用脚本。监视 Game_Character 类的实例、
  65. # 自动变化脚本状态。
  66. #==============================================================================

  67. class Sprite_Character < RPG::Sprite
  68.   #--------------------------------------------------------------------------
  69.   # ● 定义实例变量
  70.   #--------------------------------------------------------------------------
  71.   include(Sprite_Shadow_Module)           # 影子的描写
  72.   #--------------------------------------------------------------------------
  73.   # ● 初始化对像
  74.   #     character : 角色 (Game_Character)
  75.   #--------------------------------------------------------------------------
  76.   alias :JinRaiXin_Character_Shadow_initialize :initialize
  77.   def initialize(viewport, character = nil)
  78.     # 实行原来的处理
  79.     JinRaiXin_Character_Shadow_initialize(viewport, character)
  80.     # 按照角色的类型作出分歧
  81.     case @character
  82.     # 角色
  83.     when Game_Player then
  84.       # 影子的作成
  85.       character_shadow_set
  86.     # 事件
  87.     when Game_Event then
  88.       # 在指定的事件的名称前面加上 影子 这两个子
  89.       if @character.event.name.include?("影子") == true then
  90.         # 影子的作成
  91.         character_shadow_set
  92.       end
  93.     end
  94.   end
  95.   #--------------------------------------------------------------------------
  96.   # ● 刷新画面
  97.   #--------------------------------------------------------------------------
  98.   alias :update_JinRaiXin_Character_Shadow :update
  99.   def update
  100.     # 实行原来的处理
  101.     update_JinRaiXin_Character_Shadow
  102.     # 刷新影子
  103.     update_character_shadow
  104.   end
  105. end
复制代码

使用方法:
将一下这张图画放进 Picture 的文件夹去并改名为“shadow”:


然后在你需要加影子功能的事件前面写上“影子”两个字,
如下图。


效果截图:

作者: 虚幻死神    时间: 2008-7-29 03:59
不錯~~~繼續努力~~
支持~

SF?????
是SF~~~~SF的味道確是不同
作者: 越前リョーマ    时间: 2008-7-29 04:08
跳起来了怎么办?
作者: ★_茄孓    时间: 2008-7-29 04:38
以下引用越前リョーマ于2008-7-28 20:08:15的发言:

跳起来了怎么办?

应该可以根据跳越高度来适当调整zoom_x,zoom_y
作者: 灯笼菜刀王    时间: 2008-7-29 05:08
很不错的东东~~

可惜,发表太晚了...- -

我已经把所有行走图加上影子了.....OTZ....

对了,用这个的话,主角的影子怎么办?
作者: 湛蓝de海    时间: 2008-7-29 05:56
以下引用灯笼菜刀王于2008-7-28 21:08:00的发言:

对了,用这个的话,主角的影子怎么办?

[本贴由作者于 2008-7-28 21:09:31 最后编辑]

我也有这个问题.

比较使用的一个功能.
能使游戏更有精度.赞一个.

作者: 司马睿风    时间: 2008-7-29 06:50
建议用事件里的注释来判断。
作者: 劍之飛龍☆    时间: 2008-7-29 18:44
如果我用某些FUKI就不敢用了{/gg}
作者: q2571875    时间: 2008-7-29 19:59
不错啊!

支持~~~~
作者: 越前リョーマ    时间: 2008-7-30 21:28
话说直接在事件名里加影子两字可能会对某些其他系统有影响……
作者: 紫千修    时间: 2008-8-5 16:21
发出要求 不只SHOW一个图片... LZ能否实现 这样的效果
例如 脚本里写: 影子"SHOW" 就是读取 SHOW的图片 如果写影子"SHOW2"就是读取SHOW2为影子图片 以为每人高矮胖瘦都不一样....
作者: 越前リョーマ    时间: 2008-8-6 23:13
的确…… - -
某些怪物体型很大……
作者: 灯笼菜刀王    时间: 2008-8-7 06:06
个别的就手工处理嘛.....用PS~
作者: lpylhy    时间: 2008-8-7 16:08
{/cy}{/wx}{/wx}
作者: 七星落叶    时间: 2008-8-8 17:10
……%八方向行走能用此脚本么?{/fd}
作者: sixapple13    时间: 2008-9-14 16:08
那张叫shadow的图貌似显示不了了...
LZ更新下
作者: 柳飛鷹    时间: 2009-3-29 00:04
来帮忙了
影子图片更新




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