Project1

标题: - -如何将地图色调改变后,让怪物的图签色调不改变? [打印本页]

作者: 失落迷白    时间: 2010-12-29 23:32
标题: - -如何将地图色调改变后,让怪物的图签色调不改变?
发现在改了一个地图的色调之后,这个地图对应的战斗场面(外加怪物)也都色调化了,
不想让怪物的色调跟着地图改变(让怪物保持原色)。求解如何设置?:handshake
作者: kakarot    时间: 2010-12-30 06:52
暴力的办法是战斗的时候把色调调回来,然后直接准备不同色调的战斗背景(PIA飞)
作者: 小湖    时间: 2010-12-30 09:11
色调改变不会影响技能动画,不怕麻烦的话楼主可以试下,或者就要动脚本了……在行走图那一块限制了~
作者: 天圣的马甲    时间: 2010-12-30 11:37
本帖最后由 天圣的马甲 于 2010-12-30 11:49 编辑

其实真·暴力又简洁的方法是找到Spriteset_Battle里面那句@viewport1.tone = $game_screen.tone,直接注释掉,一切就清静了……只不过战斗场景里的色调再也没法用“更改画面色调”来改了(如果保持地图改变色调就只能用不同背景),所以很暴力……

麻烦的方法是,直接加个viewport把敌人的战斗图和背景分开。随便改了两笔,不保证售后……
  1. #==============================================================================
  2. # ■ Spriteset_Battle
  3. #------------------------------------------------------------------------------
  4. #  处理战斗画面的活动块的类。本类在 Scene_Battle 类
  5. # 的内部使用。
  6. #==============================================================================

  7. class Spriteset_Battle
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_reader   :viewport1                # 敌人方的显示端口
  12.   attr_reader   :viewport2                # 角色方的显示端口
  13.   #--------------------------------------------------------------------------
  14.   # ● 初始化变量
  15.   #--------------------------------------------------------------------------
  16.   def initialize
  17.     # 生成显示端口
  18.     @viewport0 = Viewport.new(0, 0, 640, 320)
  19.     @viewport1 = Viewport.new(0, 0, 640, 320)
  20.     @viewport2 = Viewport.new(0, 0, 640, 480)
  21.     @viewport3 = Viewport.new(0, 0, 640, 480)
  22.     @viewport4 = Viewport.new(0, 0, 640, 480)
  23.     @viewport2.z = 101
  24.     @viewport3.z = 200
  25.     @viewport4.z = 5000
  26.     # 生成战斗背景活动块
  27.     @battleback_sprite = Sprite.new(@viewport0)
  28.     # 生成敌人活动块
  29.     @enemy_sprites = []
  30.     for enemy in $game_troop.enemies.reverse
  31.       @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  32.     end
  33.     # 生成敌人活动块
  34.     @actor_sprites = []
  35.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  36.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  37.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  38.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  39.     # 生成天候
  40.     @weather = RPG::Weather.new(@viewport0)
  41.     # 生成图片活动块
  42.     @picture_sprites = []
  43.     for i in 51..100
  44.       @picture_sprites.push(Sprite_Picture.new(@viewport3,
  45.         $game_screen.pictures[i]))
  46.     end
  47.     # 生成计时器块
  48.     @timer_sprite = Sprite_Timer.new
  49.     # 刷新画面
  50.     update
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● 释放
  54.   #--------------------------------------------------------------------------
  55.   def dispose
  56.     # 如果战斗背景位图存在的情况下就释放
  57.     if @battleback_sprite.bitmap != nil
  58.       @battleback_sprite.bitmap.dispose
  59.     end
  60.     # 释放战斗背景活动块
  61.     @battleback_sprite.dispose
  62.     # 释放敌人活动块、角色活动块
  63.     for sprite in @enemy_sprites + @actor_sprites
  64.       sprite.dispose
  65.     end
  66.     # 释放天候
  67.     @weather.dispose
  68.     # 释放图片活动块
  69.     for sprite in @picture_sprites
  70.       sprite.dispose
  71.     end
  72.     # 释放计时器活动块
  73.     @timer_sprite.dispose
  74.     # 释放显示端口
  75.     @viewport0.dispose
  76.     @viewport1.dispose
  77.     @viewport2.dispose
  78.     @viewport3.dispose
  79.     @viewport4.dispose
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   # ● 显示效果中判定
  83.   #--------------------------------------------------------------------------
  84.   def effect?
  85.     # 如果是在显示效果中的话就返回 true
  86.     for sprite in @enemy_sprites + @actor_sprites
  87.       return true if sprite.effect?
  88.     end
  89.     return false
  90.   end
  91.   #--------------------------------------------------------------------------
  92.   # ● 刷新画面
  93.   #--------------------------------------------------------------------------
  94.   def update
  95.     # 刷新角色的活动块 (对应角色的替换)
  96.     @actor_sprites[0].battler = $game_party.actors[0]
  97.     @actor_sprites[1].battler = $game_party.actors[1]
  98.     @actor_sprites[2].battler = $game_party.actors[2]
  99.     @actor_sprites[3].battler = $game_party.actors[3]
  100.     # 战斗背景的文件名与现在情况有差异的情况下
  101.     if @battleback_name != $game_temp.battleback_name
  102.       @battleback_name = $game_temp.battleback_name
  103.       if @battleback_sprite.bitmap != nil
  104.         @battleback_sprite.bitmap.dispose
  105.       end
  106.       @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
  107.       @battleback_sprite.src_rect.set(0, 0, 640, 320)
  108.     end
  109.     # 刷新战斗者的活动块
  110.     for sprite in @enemy_sprites + @actor_sprites
  111.       sprite.update
  112.     end
  113.     # 刷新天气图形
  114.     @weather.type = $game_screen.weather_type
  115.     @weather.max = $game_screen.weather_max
  116.     @weather.update
  117.     # 刷新图片活动块
  118.     for sprite in @picture_sprites
  119.       sprite.update
  120.     end
  121.     # 刷新计时器活动块
  122.     @timer_sprite.update
  123.     # 设置画面的色调与震动位置
  124.     @viewport0.tone = $game_screen.tone
  125.     @viewport0.ox = $game_screen.shake
  126.     # 设置画面的闪烁色
  127.     @viewport4.color = $game_screen.flash_color
  128.     # 刷新显示端口
  129.     @viewport0.update
  130.     @viewport1.update
  131.     @viewport2.update
  132.     @viewport4.update
  133.   end
  134. end
复制代码





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