Project1

标题: 如何使战斗背景可以像雾一样移动? [打印本页]

作者: 灯笼菜刀王    时间: 2008-6-23 23:05
http://rpg.blue/web/htm/news368.htm


作者: pinko    时间: 2008-6-23 23:42
这个方法和RTAB是否兼容?
作者: 灯笼菜刀王    时间: 2008-6-24 00:09
应该不冲突,没试过

我是链接党-_,-  具体请找动手党和养手党。
作者: dbshy    时间: 2008-6-24 00:16
帖一下Spriteset_Battle的脚本 = =

PS:不贴脚本,鬼才知道
作者: pinko    时间: 2008-6-24 00:59
  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.     @viewport1 = Viewport.new(0, 0, 640, 480)
  19.     @viewport2 = Viewport.new(0, 0, 640, 480)
  20.     @viewport3 = Viewport.new(0, 0, 640, 480)
  21.     @viewport4 = Viewport.new(0, 0, 640, 480)
  22.     @viewport2.z = 101
  23.     @viewport3.z = 200
  24.     @viewport4.z = 5000   
  25.     #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  26.     @panorama_sprite_1 = Sprite.new(@viewport1)
  27.     @panorama_sprite_2 = Sprite.new(@viewport1)
  28.     #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  29.     # 生成战斗背景活动块
  30.     @battleback_sprite = Sprite.new(@viewport1)
  31.     # 生成敌人活动块
  32.     @enemy_sprites = []
  33.     for enemy in $game_troop.enemies.reverse
  34.       @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  35.     end
  36.     # 生成敌人活动块
  37.     @actor_sprites = []
  38.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  39.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  40.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  41.     @actor_sprites.push(Sprite_Battler.new(@viewport2))
  42.     # 生成天候
  43.     @weather = RPG::Weather.new(@viewport1)
  44.     # 生成图片活动块
  45.     @picture_sprites = []
  46.     for i in 51..100
  47.       @picture_sprites.push(Sprite_Picture.new(@viewport3,
  48.         $game_screen.pictures[i]))
  49.     end
  50.     # 生成计时器块
  51.     @timer_sprite = Sprite_Timer.new
  52.     # 刷新画面
  53.     update
  54.   end
  55.   #--------------------------------------------------------------------------
  56.   # ● 释放
  57.   #--------------------------------------------------------------------------
  58.   def dispose
  59.     # 如果战斗背景位图存在的情况下就释放
  60.     if @battleback_sprite.bitmap != nil
  61.       @battleback_sprite.bitmap.dispose
  62.     end
  63.     # 释放战斗背景活动块
  64.     @battleback_sprite.dispose
  65.     # 释放敌人活动块、角色活动块
  66.     for sprite in @enemy_sprites + @actor_sprites
  67.       sprite.dispose
  68.     end
  69.     # 释放天候
  70.     @weather.dispose
  71.     # 释放图片活动块
  72.     for sprite in @picture_sprites
  73.       sprite.dispose
  74.     end
  75.     #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  76.     @panorama_sprite_1.dispose
  77.     @panorama_sprite_2.dispose
  78.     #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  79.     # 释放计时器活动块
  80.     @timer_sprite.dispose
  81.     # 释放显示端口
  82.     @viewport1.dispose
  83.     @viewport2.dispose
  84.     @viewport3.dispose
  85.     @viewport4.dispose
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # ● 显示效果中判定
  89.   #--------------------------------------------------------------------------
  90.   def effect?
  91.     # 如果是在显示效果中的话就返回 true
  92.     for sprite in @enemy_sprites + @actor_sprites
  93.       return true if sprite.effect?
  94.     end
  95.     return false
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ● 刷新画面
  99.   #--------------------------------------------------------------------------
  100.   def update
  101.     #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  102.     if @panorama_name != $game_map.panorama_name
  103.       @panorama_name  = $game_map.panorama_name
  104.       if @panorama_sprite_1.bitmap != nil
  105.         @panorama_sprite_1.bitmap.dispose
  106.         @panorama_sprite_2.bitmap.dispose
  107.       end
  108.       @panorama_sprite_1.bitmap = RPG::Cache.panorama(@panorama_name, $game_map.panorama_hue)
  109.       @panorama_sprite_2.bitmap = RPG::Cache.panorama(@panorama_name, $game_map.panorama_hue)
  110.       @panorama_sprite_1.x = 320
  111.       @panorama_sprite_2.x = 320 - @panorama_sprite_2.bitmap.width
  112.     else
  113.       @panorama_sprite_1.x += 1
  114.       @panorama_sprite_2.x += 1
  115.       if @panorama_sprite_1.x == 640
  116.         @panorama_sprite_1.x = @panorama_sprite_2.x - @panorama_sprite_2.bitmap.width
  117.       end
  118.       if @panorama_sprite_2.x == 640
  119.         @panorama_sprite_2.x = @panorama_sprite_1.x - @panorama_sprite_1.bitmap.width
  120.       end
  121.     end
  122.     #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  123.     # 刷新角色的活动块 (对应角色的替换)
  124.     @actor_sprites[0].battler = $game_party.actors[0]
  125.     @actor_sprites[1].battler = $game_party.actors[1]
  126.     @actor_sprites[2].battler = $game_party.actors[2]
  127.     @actor_sprites[3].battler = $game_party.actors[3]
  128.     # 战斗背景的文件名与现在情况有差异的情况下
  129.     if @battleback_name != $game_temp.battleback_name
  130.       @battleback_name = $game_temp.battleback_name
  131.       if @battleback_sprite.bitmap != nil
  132.         @battleback_sprite.bitmap.dispose
  133.       end
  134.       @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
  135.       @battleback_sprite.src_rect.set(0, 0, 640, 480)
  136.     end
  137.     # 刷新战斗者的活动块
  138.     for sprite in @enemy_sprites + @actor_sprites
  139.       sprite.update
  140.     end
  141.     # 刷新天气图形
  142.     @weather.type = $game_screen.weather_type
  143.     @weather.max = $game_screen.weather_max
  144.     @weather.update
  145.     # 刷新图片活动块
  146.     for sprite in @picture_sprites
  147.       sprite.update
  148.     end
  149.     # 刷新计时器活动块
  150.     @timer_sprite.update
  151.     # 设置画面的色调与震动位置
  152.     @viewport1.tone = $game_screen.tone
  153.     @viewport1.ox = $game_screen.shake
  154.     # 设置画面的闪烁色
  155.     @viewport4.color = $game_screen.flash_color
  156.     # 刷新显示端口
  157.     @viewport1.update
  158.     @viewport2.update
  159.     @viewport4.update
  160.   end
  161. end
复制代码


不显示冲突,但是用在RTAB里无效....
作者: dbshy    时间: 2008-6-24 01:01
我的意思是贴RTAB的Spriteset_Battle的脚本 = =
作者: pinko    时间: 2008-6-24 03:00
我的RTAB没有修改那个脚本。

应该是RTAB战斗系统那里的。
作者: pinko    时间: 2008-6-27 22:52
此问题仍未得到解决- -||
作者: dbshy    时间: 2008-6-27 23:04
先将RTAB中的Spriteset_Battle的内容删掉,用上面你贴的脚本替换 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~ [LINE]1,#dddddd[/LINE]系统信息:本贴由本区版主认可为正确答案,66RPG感谢您的热情解答~
作者: pinko    时间: 2009-6-12 08:00
标题: 如何使战斗背景可以像雾一样移动?
这样就可以表现出空中战的感觉了。 [LINE]1,#dddddd[/LINE]此贴于 2008-6-27 5:22:28 被版主darkten提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]版务信息:版主帮忙结贴~




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