查看: 3612|回复: 2

[原创发布] 遮挡半透明 2015.2.27更新

[复制链接]

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
回帖
1223
发表于 2014-7-28 14:17:25 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 恐惧剑刃 于 2015-2-27 08:27 编辑

之前版本 如果地图做大一点,就会发现 有明显BUG!!
此类效果最好还是新加一个活动块吧?!

比如在Spriteset_Map
# 生成角色活动块 那里
加上一行
@character_sprites.push(Sprite_Character_Cover.new(@viewport1, $game_player))

简单修改(透明度,Z,不显示动画等)
@character @sprite @viewport  @tile_id @cw @ch
[pre lang="ruby"]#==============================================================================
# ■ Sprite_Character_Cover
#------------------------------------------------------------------------------
#  遮挡半透明覆盖用
#==============================================================================

class Sprite_Character_Cover < Sprite
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_accessor :character                # 角色
  #--------------------------------------------------------------------------
  # ● 初始化对像
  #     viewport  : 查看端口
  #     character : 角色 (Game_Character)
  #--------------------------------------------------------------------------
  def initialize(viewport, character = nil)
    super(viewport)
    @character = character
    update
  end
  #--------------------------------------------------------------------------
  # ● 更新画面
  #--------------------------------------------------------------------------
  def update
    super
    # 元件 ID、文件名、色相与现在的情况存在差异的情况下
    if @tile_id != @character.tile_id or
       @character_name != @character.character_name or
       @character_hue != @character.character_hue
      # 记忆元件 ID 与文件名、色相
      @tile_id = @character.tile_id
      @character_name = @character.character_name
      @character_hue = @character.character_hue
      # 元件 ID 为有效值的情况下
      #if @tile_id >= 384
      #  self.bitmap = RPG::Cache.tile($game_map.tileset_name,
      #    @tile_id, @character.character_hue)
      #  self.src_rect.set(0, 0, 32, 32)
      #  self.ox = 16
      #  self.oy = 32
      # 元件 ID 为无效值的情况下
      #else
        self.bitmap = RPG::Cache.character(@character.character_name,
          @character.character_hue)
        @cw = bitmap.width / 4
        @ch = bitmap.height / 4
        self.ox = @cw / 2
        self.oy = @ch
      #end
    end
    # 设置可视状态
    self.visible = (not @character.transparent)
    # 图形是角色的情况下
    #if @tile_id == 0
      # 设置传送目标的矩形
      sx = @character.pattern * @cw
      sy = (@character.direction - 2) / 2 * @ch
      self.src_rect.set(sx, sy, @cw, @ch)
    #end
    # 设置脚本的坐标
    self.x = @character.screen_x
    self.y = @character.screen_y
    self.z = @character.screen_z(@ch) + 999
    # 设置不透明度、合成方式、茂密
    self.opacity = @character.opacity / 2
    self.blend_type = @character.blend_type
    self.bush_depth = @character.bush_depth
    # 动画
    #if @character.animation_id != 0
    #  animation = $data_animations[@character.animation_id]
    #  animation(animation, true)
    #  @character.animation_id = 0
    #end
  end
end
[/pre]

评分

参与人数 1星屑 +15 收起 理由
汪汪 + 15 塞糖

查看全部评分

梦石
3
星屑
178
在线时间
161 小时
注册时间
2010-9-30
回帖
91
发表于 2014-7-28 15:24:14 | 显示全部楼层
部分遮住怎么办……
想到一个完善的办法,角色的透明度不要动,新建一个和角色重合的图片,透明度低,优先级比图块高

评分

参与人数 4星屑 +405 收起 理由
芯☆淡茹水 + 100 这主意简单适应。
taroxd + 100 GJ
恐惧剑刃 + 85 塞糖
喵呜喵5 + 120 好思路

查看全部评分

回复

使用道具 举报

菜鸟飞呀飞 该用户已被删除
发表于 2014-7-30 02:33:34 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部