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

Project1

 找回密码
 注册会员
搜索
查看: 1116|回复: 4

[已经解决] 人物阴影问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
176
在线时间
186 小时
注册时间
2010-6-22
帖子
233
发表于 2012-8-12 17:44:56 | 显示全部楼层 |阅读模式
人物阴影问题
用了脚本, 人物阴影没问题
可是连NPC(事件)也有阴影
如何删除事件阴影?

以下是脚本:
  1. class Sprite_Character < RPG::Sprite
  2.   #--------------------------------------------------------------------------
  3.   # ● 定义实例变量
  4.   #--------------------------------------------------------------------------
  5.   attr_accessor :character                # 角色
  6.   #--------------------------------------------------------------------------
  7.   # ● 初始化对像
  8.   #     viewport  : 查看端口
  9.   #     character : 角色 (Game_Character)
  10.   #--------------------------------------------------------------------------
  11.   def initialize(viewport,character = nil)
  12.     super(viewport)
  13.     @character = character
  14.     @v = RPG::Sprite.new(viewport)
  15.     update
  16.   end
  17.   #--------------------------------------------------------------------------
  18.   # ● 更新画面
  19.   #--------------------------------------------------------------------------
  20.   def update
  21.    super
  22.    # 元件 ID、文件名、色相与现在的情况存在差异的情况下
  23.    id = $game_map.map_id
  24.    name = $mapname[id].name
  25.    
  26.    if @tile_id != @character.tile_id or
  27.       @character_name != @character.character_name or
  28.       @character_hue != @character.character_hue
  29.      # 记忆元件 ID 与文件名、色相
  30.      @tile_id = @character.tile_id
  31.      @character_name = @character.character_name
  32.      @character_hue = @character.character_hue
  33.      # 元件 ID 为有效值的情况下
  34.      if @tile_id >= 384
  35.        self.bitmap = RPG::Cache.tile($game_map.tileset_name,
  36.          @tile_id, @character.character_hue)
  37.        self.src_rect.set(0, 0, 32, 32)
  38.        self.ox = 16
  39.        self.oy = 32
  40.      # 元件 ID 为无效值的情况下
  41.      else
  42.        self.bitmap = RPG::Cache.character(@character.character_name,
  43.        @character.character_hue)
  44.        @v.bitmap = RPG::Cache.character(@character.character_name,
  45.        @character.character_hue)
  46.        @v.flash(Color.new(0, 0, 0, 255), 1)
  47.        @v.angle = 0
  48.        @v.mirror = true
  49.        #@v.opacity = 179
  50.        @cw = self.bitmap.width / $c3_每一步的帧数
  51.        if $c3_总共可用的方向数==4
  52.          @ch = self.bitmap.height / 4
  53.        else
  54.          @ch = self.bitmap.height / 8
  55.        end
  56.        self.ox = @cw / 2
  57.        self.oy = @ch
  58.        @v.ox = @cw / 2
  59.        @v.oy = @ch
  60.      end
  61.    end
  62.    # 设置可视状态
  63.    self.visible = (not @character.transparent)
  64.    @v.visible = (not @character.transparent)
  65.    # 图形是角色的情况下
  66.    if @tile_id == 0
  67.      # 设置传送目标的矩形
  68.      sx = @character.pattern * @cw
  69.      if $c3_总共可用的方向数==8
  70.        case @character.direction
  71.        when 2
  72.          sy = 0 * @ch
  73.        when 4
  74.          sy = 1 * @ch
  75.        when 6
  76.          sy = 2 * @ch
  77.        when 8
  78.          sy = 3 * @ch
  79.        when 1
  80.          sy = 4 * @ch
  81.        when 3
  82.          sy = 5 * @ch
  83.        when 7
  84.          sy = 6 * @ch
  85.        when 9
  86.          sy = 7 * @ch
  87.        end
  88.      else
  89.        sy = (@character.direction - 2) / 2 * @ch
  90.      end
  91.      self.src_rect.set(sx, sy, @cw, @ch)
  92.      @v.src_rect.set(sx, sy, @cw, @ch)
  93.    end
复制代码

Lv1.梦旅人

梦石
0
星屑
104
在线时间
1270 小时
注册时间
2011-2-14
帖子
5591
发表于 2012-8-12 19:45:31 | 显示全部楼层
本帖最后由 R-零 于 2012-8-12 20:17 编辑

64行改成
  1. @v.visible = (not (@character.transparent or @character.is_a?(Game_Event)))
复制代码
解说:首先,这个脚本在第11行的initialize(初始化)这个定义下面添加了一行 @v = RPG::Sprite.new(viewport) 直接断定就是对阴影图形的初始化
        
        然后,往下翻是 @v.visible = (not @character.transparent),这行设置阴影的可视状态 “@v的可视状态与行走图的隐藏标记相反”
       只要在这里增加一个判断,即 “行走图是事件( or @charcter.is_a?(Game_Event))”,就可以了

这些代码未经测试,如有问题请回复。

以上解说供大家参考���

评分

参与人数 1梦石 +2 收起 理由
hcm + 2 认可答案

查看全部评分

回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
176
在线时间
186 小时
注册时间
2010-6-22
帖子
233
 楼主| 发表于 2012-8-12 20:14:16 | 显示全部楼层
R-零 发表于 2012-8-12 19:45
64行改成解说:首先,这个脚本在第11行的initialize(初始化)这个定义下面添加了一行 @v = RPG::Sprite.ne ...

改了以后事件阴影还在
是否有其他地方也是设置可视状态?
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
104
在线时间
1270 小时
注册时间
2011-2-14
帖子
5591
发表于 2012-8-12 20:17:33 | 显示全部楼层
仙芋 发表于 2012-8-12 20:14
改了以后事件阴影还在
是否有其他地方也是设置可视状态?

手滑错字了,代码已经修正
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
176
在线时间
186 小时
注册时间
2010-6-22
帖子
233
 楼主| 发表于 2012-8-12 20:21:11 | 显示全部楼层
R-零 发表于 2012-8-12 20:17
手滑错字了,代码已经修正

现在可以了, 真谢谢你详细的说明了前因后果! 
(刚在我也没发现是打错了字@@)
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2020-4-6 07:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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