Project1

标题: 请问怎么把战斗背景弄成全屏幕的! [打印本页]

作者: jy03037318    时间: 2008-10-6 06:44
标题: 请问怎么把战斗背景弄成全屏幕的!
我用的是45度的战斗,可是原来的战斗背景的下面就空了一大块,空的地方就是原来默认战斗画面显示HP和SP的地方,我不想用地图当背景,感觉不美观!所以我想问下有什么办法能把这个空的地方补充起来吗?还是必须要换掉所有的背景。
[LINE]1,#dddddd[/LINE]此贴于 2008-10-7 13:25:05 被版主darkten提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: darkten    时间: 2008-10-6 06:46
主站搜索“战斗背景全画面化”就可以找到解决方法了...
作者: jy03037318    时间: 2008-10-6 07:22
那个上面说的貌似放全屏幕魔法会出错,有这么回事吗?
作者: 天圣的马甲    时间: 2008-10-6 07:41
在Spriteset_Battle里面找320的部分改为480
作者: lhbadsl    时间: 2008-10-6 08:02
貌似只要把这句修改一下就可以了@battleback_sprite.src_rect.set(0, 0, 640, 320),变为@battleback_sprite.src_rect.set(0, 0, 640, 480)或者你要更大的比如768*576,那么就要在
    # 战斗背景的文件名与现在情况有差异的情况下
    if @battleback_name != $game_temp.battleback_name
      @battleback_name = $game_temp.battleback_name
      if @battleback_sprite.bitmap != nil
        @battleback_sprite.bitmap.dispose
      end
      @base_zoom = 1.2
      @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
      @battleback_sprite.src_rect.set(0, 0, 768, 576)
    end

那么战斗背景就会可以超出640*480的限制,不过就是超出部分不会显示,这是做震动的时候不会产生黑边的方法,如果不做这个效果那么就把那个320改为480就可以了。。。。
作者: jy03037318    时间: 2008-10-6 08:37
我改了~可是为什么没用啊!!哪个地方错了帮我看看





#==============================================================================
# ■ Spriteset_Battle
#------------------------------------------------------------------------------
#  处理战斗画面的活动块的类。本类在 Scene_Battle 类
# 的内部使用。
#==============================================================================

class Spriteset_Battle
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_reader   :viewport1                # 敌人方的显示端口
  attr_reader   :viewport2                # 角色方的显示端口
  #--------------------------------------------------------------------------
  # ● 初始化变量
  #--------------------------------------------------------------------------
  def initialize
    # 生成显示端口
    @viewport1 = Viewport.new(0, 0, 640, 480)
    @viewport2 = Viewport.new(0, 0, 640, 480)
    @viewport3 = Viewport.new(0, 0, 640, 480)
    @viewport4 = Viewport.new(0, 0, 640, 480)
    @viewport2.z = 101
    @viewport3.z = 200
    @viewport4.z = 5000
    # 生成战斗背景活动块
    @battleback_sprite = Sprite.new(@viewport1)
    # 生成敌人活动块
    @enemy_sprites = []
    for enemy in $game_troop.enemies.reverse
      @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
    end
    # 生成敌人活动块
    @actor_sprites = []
    @actor_sprites.push(Sprite_Battler.new(@viewport2))
    @actor_sprites.push(Sprite_Battler.new(@viewport2))
    @actor_sprites.push(Sprite_Battler.new(@viewport2))
    @actor_sprites.push(Sprite_Battler.new(@viewport2))
    # 生成天候
    @weather = RPG::Weather.new(@viewport1)
    # 生成图片活动块
    @picture_sprites = []
    for i in 51..100
      @picture_sprites.push(Sprite_Picture.new(@viewport3,
        $game_screen.pictures))
    end
    # 生成计时器块
    @timer_sprite = Sprite_Timer.new
    # 刷新画面
    update
  end
  #--------------------------------------------------------------------------
  # ● 释放
  #--------------------------------------------------------------------------
  def dispose
    # 如果战斗背景位图存在的情况下就释放
    if @battleback_sprite.bitmap != nil
      @battleback_sprite.bitmap.dispose
    end
    # 释放战斗背景活动块
    @battleback_sprite.dispose
    # 释放敌人活动块、角色活动块
    for sprite in @enemy_sprites + @actor_sprites
      sprite.dispose
    end
    # 释放天候
    @weather.dispose
    # 释放图片活动块
    for sprite in @picture_sprites
      sprite.dispose
    end
    # 释放计时器活动块
    @timer_sprite.dispose
    # 释放显示端口
    @viewport1.dispose
    @viewport2.dispose
    @viewport3.dispose
    @viewport4.dispose
  end
  #--------------------------------------------------------------------------
  # ● 显示效果中判定
  #--------------------------------------------------------------------------
  def effect?
    # 如果是在显示效果中的话就返回 true
    for sprite in @enemy_sprites + @actor_sprites
      return true if sprite.effect?
    end
    return false
  end
  #--------------------------------------------------------------------------
  # ● 刷新画面
  #--------------------------------------------------------------------------
  def update
    # 刷新角色的活动块 (对应角色的替换)
    @actor_sprites[0].battler = $game_party.actors[0]
    @actor_sprites[1].battler = $game_party.actors[1]
    @actor_sprites[2].battler = $game_party.actors[2]
    @actor_sprites[3].battler = $game_party.actors[3]
    # 战斗背景的文件名与现在情况有差异的情况下
    if @battleback_name != $game_temp.battleback_name
      @battleback_name = $game_temp.battleback_name
      if @battleback_sprite.bitmap != nil
        @battleback_sprite.bitmap.dispose
      end
      @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
      @battleback_sprite.src_rect.set(0, 0, 640, 480)
    end
    # 刷新战斗者的活动块
    for sprite in @enemy_sprites + @actor_sprites
      sprite.update
    end
    # 刷新天气图形
    @weather.type = $game_screen.weather_type
    @weather.max = $game_screen.weather_max
    @weather.update
    # 刷新图片活动块
    for sprite in @picture_sprites
      sprite.update
    end
    # 刷新计时器活动块
    @timer_sprite.update
    # 设置画面的色调与震动位置
    @viewport1.tone = $game_screen.tone
    @viewport1.ox = $game_screen.shake
    # 设置画面的闪烁色
    @viewport4.color = $game_screen.flash_color
    # 刷新显示端口
    @viewport1.update
    @viewport2.update
    @viewport4.update
  end
end

作者: link006007    时间: 2008-10-6 08:39
viewport和sprite的blt都改了还是没效果的话  那就是:
脚本的覆盖 (同类脚本)
作者: jy03037318    时间: 2008-10-6 08:46
我晕老!!!
那到底该怎么弄~~
作者: lhbadsl    时间: 2008-10-6 08:53
[quote]ls  那个改精灵是改不到填满窗口的
在RM中, 只要是在viewport生成的精灵  它的活动极限(x, y, z等等)都会受到viewport的限制
要更改精灵, 先要看看是否要超出viewport对它的限制 [quote]
。。。。。。。。。为什么我最后成功了。。。。。楼主的脚本貌似没有错误,不过要看看你的背景图是不是640*480了。。。。。。。因为脚本是不会给你拉大背景图的。。。。附图一张看看是不是这个效果。。。。。
http://rpg.blue/upload_program/d/lhbadsl_oo_103683415.png [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 暧幺    时间: 2008-10-6 13:41
提示: 作者被禁止或删除 内容自动屏蔽
作者: redant    时间: 2008-10-7 00:49
http://rpg.blue/web/htm/news131.htm




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