查看: 3580|回复: 2

[已经解决] 请问薄雾动态标题脚本的问题

[复制链接]
梦石
1
星屑
5154
在线时间
1004 小时
注册时间
2012-5-14
回帖
44

开拓者

发表于 2017-10-5 21:19:57 | 显示全部楼层 |阅读模式

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

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

×
三个选项是用左右键横向来回切换的,请问如何做成上下键切换的?
[pre lang="ruby"]#encoding:utf-8
#==============================================================================
# ■ 薄雾年代记标题脚本
#------------------------------------------------------------------------------
#  薄雾年代记的标题脚本
#==============================================================================


#==============================================================================
# 介绍:
#      这个不完全是薄雾的标题脚本,但是是那个的普适版,作者:LBQ,请自由使用,转载
#==============================================================================



# 设置模块
module LBQ
  module MC_Title
   
    #logo还有选项的淡入速度,数字越大淡出淡入越快
    FADE_SPEED=3
   
   
    #黑暗层的淡入淡出速度,数字越大淡出淡入越快。第一项是进入场景,第二项是退出
    MASK_FADE=[3,3]
   
   
   
    #背景滑动速度,默认是[2,1],即为每两帧横向滑动一个单位。
    SHIFT_SPEED=[2,1]
   
    #图像设置
    GRAPHICS=['Choice','spark','logo','background']
   
    #生成一个新的闪光点的间隔时间
    TIME_SPARK=12
   
    #分辨率设定
    RESOLUTION=[544,416]
   
    #储存文件的文件夹名称,位于Graphics文件夹下面
    FOLDER="MC_Title"
   
    #离开界面的时候的BGM淡出速度,单位毫秒
    BGM_FADE=1600
   
    #3个层的Z坐标设定。
    Z_SETTINGS=[1,2,3]
   
    #闪光的生命周期。(半衰期,总共生命周期)←装X的设定
    LIFE_CYCLE=[300,500]
  end
end


#Cache加强
module Cache
  include LBQ::MC_Title
  #--------------------------------------------------------------------------
  # ● 标题
  #--------------------------------------------------------------------------
  def self.mc_title(filename)
    load_bitmap("Graphics/#{FOLDER}/", filename)
  end
end


#==============================================================================
# ■ LBQ Spark
#------------------------------------------------------------------------------
#  闪光的精灵类
#==============================================================================
class Sprite_lbqSpark < Sprite_Base
  include LBQ::MC_Title
  def initialize(viewport=nil)
    @timer=0
    super(viewport)
    self.bitmap=Cache.mc_title(GRAPHICS[1])
    @opacity_speed=10
    @zoom_change=0
    set_rand_stats
   
  end
  
  
  def update
    super
        @timer+=1
    calc_speed
    self.x += @x_speed
    self.y += @y_speed
    if @timer<=LIFE_CYCLE[0]
      self.opacity += @opacity_speed
    else
      self.opacity -= @opacity_speed*2
    end
   
    self.angle += @angle_speed
    self.zoom_x += @zoom_change
    self.zoom_y += @zoom_change
    self.visible=false if @timer>=LIFE_CYCLE[1]
   
  end
  def calc_speed
  end
  def set_rand_stats
    @x_speed=(rand(4)-2)*0.8
    @y_speed=(rand(4)-2)*0.8
    @x_speed+=rand(2)-1 if @x_speed==0
    @y_speed+=rand(2)-1 if @y_speed==0
    @opacity_speed=2
    @angle_speed=rand(3)-3
    self.opacity = 1
    self.angle = rand(360)

      rand_num=rand(9)
      case rand_num
      when 0
        self.x,self.y=0,0
      when 1
        self.x,self.y=RESOLUTION[0],RESOLUTION[1]
      when 2
        self.x,self.y=RESOLUTION[0],0
      when 3
        self.x,self.y=0,RESOLUTION[1]
      when 4
        self.x,self.y=RESOLUTION[0]/2,0
      when 5
        self.x,self.y=RESOLUTION[0]/2,RESOLUTION[1]
      when 6
        self.x,self.y=0,208
      when 7
        self.x,self.y=RESOLUTION[0],RESOLUTION[1]/2
      when 8
        self.x,self.y=RESOLUTION[0]/2 ,RESOLUTION[1]/2
      end
      

   
    self.zoom_x=(rand(100) + 100) / 100.0
    self.zoom_y = self.zoom_x
    self.blend_type=1
  end
  def get_rand_pos
    pos=[]
    case rand(4)
    when 0
      pos[0]=0
    when 1
      pos[0]=200
    when 2
      pos[0]=300
    when 3
      pos[0]=500
    when 4
      pos[0]=100
    end
   
    case rand(4)
    when 0
      pos[1]=0
    when 1
      pos[1]=200
    when 2
      pos[1]=300
    when 3
      pos[1]=500
    when 4
      pos[1]=100
    end
    return pos
  end
  
end


#==============================================================================
# ■ MC Choice
#------------------------------------------------------------------------------
#  可爱的选项~
#==============================================================================
# 选项用精灵类
class Sprite_MCchoice < Sprite_Base
  include LBQ::MC_Title
  #设置
  MAX_INDEX=3
  MIN_INDEX=1
  #初始化
  def initialize(viewport=nil)
    super(viewport)
   
    #光标Index
    if DataManager.save_file_exists?
      @index=2
    else
      @index=1
    end
   
   
    #动态阶段
    @stage=1
  end
  
  
  #更新方法
  def update
    #super
    super
   
    #基础的动态设定
    case @stage
    when 1
      
      #更新选项
      update_cursor
      
      #再次强化不透明度
      self.opacity=0
      
      #之后转成第二步
      @stage+=1

    when 2
      #变得透明
      self.opacity+=FADE_SPEED
      #如果已经变完了
      if self.opacity>=255
        #进入第三步
        @stage+=1
      end
    when 3
      #好的,于是咱来进行光标更新
      if Input.trigger?(:LEFT)
        Sound.play_cursor
        if @index==MIN_INDEX
          @index=MAX_INDEX
        else
          @index-=1
        end
        #输入完毕之后再更新
        update_cursor
        
      elsif Input.trigger?(:RIGHT)
        Sound.play_cursor
        if @index==MAX_INDEX
          #强化条件
          @index=MIN_INDEX
         
        else
          @index+=1
        end
        #输入完毕之后再更新
        update_cursor
      end
      
    end
  end
  
  #index外置接口
  def index
    @index
  end
  
  #更新光标
  def update_cursor
    #设置当前bitmap名字
      bitmap_name="#{GRAPHICS[0]}#{@index}"
      self.bitmap=Cache.mc_title(bitmap_name)
    end
  #设置当前index  
  def set_index(index)
    @index=index
  end
  
end



#==============================================================================
# ■ Scene_Title
#------------------------------------------------------------------------------
#  标题类
#==============================================================================
# Scene类
class Scene_Title < Scene_Base
    include LBQ::MC_Title
  def start
    super
    @sparks=[]
   
    @timer=0
   
   
    #抄袭原版的=-=
    SceneManager.clear
    Graphics.freeze
   
    #创建显示端口
    create_viewports
   
    #创建背景
    create_background
   
    #创建精灵类
    create_sprites
   
    #播放标题音乐
    play_title_music
   
    #动态阶段
    @stage=0
  end
  
  #创建各种显示端口
  def create_viewports
    #背景
    #RESOLUTION[0],RESOLUTION[1]
    @bg_vp=Viewport.new(0,0,RESOLUTION[0],RESOLUTION[1])
   
    #选项
    @choice_vp=Viewport.new(0,0,RESOLUTION[0],RESOLUTION[1])
    @choice_vp.z=Z_SETTINGS[0]
   
    @spark_vp=Viewport.new(0,0,RESOLUTION[0],RESOLUTION[1])
    @spark_vp.z=Z_SETTINGS[1]
   
    @mask_vp=Viewport.new(0,0,RESOLUTION[0],RESOLUTION[1])
    @mask_vp.z=Z_SETTINGS[2]
  end
  
  
  #创建背景
  def create_background
    #滚动的背景
    @bg_sprite=Plane.new(@bg_vp)
   
    #设置背景图像
    @bg_sprite.bitmap=Cache.mc_title(GRAPHICS[3])
  end
  
  #更新
  def update
    super
   
    #计时器+
    @timer+=1
   
    #滚动
    @bg_sprite.ox+=SHIFT_SPEED[1] if @timer%SHIFT_SPEED[0]==0
   
     @sparks.push(Sprite_lbqSpark.new(@spark_vp)) if @timer%TIME_SPARK==0
     @sparks.each{|spk|spk.update }
#~      unless spk.disposed?
   
   
    case @stage
    when 0
      @mask_sprite.opacity-=MASK_FADE[0]
      if @mask_sprite.opacity<=0
        @stage=1
      end
      
    when 1
      #淡入阶段
      @logo_sprite.opacity+=FADE_SPEED
      if @logo_sprite.opacity>=255
        @stage=2
      end
      #更新选项
      @choice_sprite.update
    when 2
      @choice_sprite.update
      #如果确定了
      if Input.trigger?(:C)
        Sound.play_ok
        case @choice_sprite.index
        when 1
          @stage=3
        when 2
          @stage=4
        when 3
          @stage=5
        end
      end
    when 3
      Audio.bgm_fade(BGM_FADE)
      @mask_sprite.opacity+=MASK_FADE[1]
      if @mask_sprite.opacity>=255
        command_new_game
      end
    when 4
      command_continue
    when 5
      Audio.bgm_fade(BGM_FADE)
      @mask_sprite.opacity+=MASK_FADE[1]
      if @mask_sprite.opacity>=255
        exit
      end
    end
   
  end
  #--------------------------------------------------------------------------
  # ● 指令“继续游戏”
  #--------------------------------------------------------------------------
  def command_continue
    SceneManager.call(Scene_Load)
  end
  #--------------------------------------------------------------------------
  # ● 结束处理
  #--------------------------------------------------------------------------
  def terminate
    super
    SceneManager.snapshot_for_background
    @logo_sprite.dispose
    @choice_sprite.dispose
    @bg_sprite.dispose
    @bg_vp.dispose
    @choice_vp.dispose
  end
  #--------------------------------------------------------------------------
  # ● 指令“开始游戏”
  #--------------------------------------------------------------------------
  def command_new_game
    DataManager.setup_new_game
    $game_map.autoplay
    SceneManager.goto(Scene_Map)
  end
  def create_sprites
    @logo_sprite=Sprite_Base.new(@choice_vp)   
    @logo_sprite.bitmap=Cache.mc_title(GRAPHICS[2])
    @logo_sprite.opacity=0
   
    @choice_sprite=Sprite_Base.new(@choice_vp)
   
    @choice_sprite=Sprite_MCchoice.new(@choice_vp)
    @choice_sprite.opacity=0
   
    @mask_sprite=Sprite.new(@mask_vp)
    @mask_sprite.bitmap=Bitmap.new(RESOLUTION[0],RESOLUTION[1])
    @mask_sprite.bitmap.fill_rect(0,0,RESOLUTION[0],RESOLUTION[1],Color.new(0,0,0))
  end
  
  def play_title_music
    $data_system.title_bgm.play
    RPG::BGS.stop
    RPG::ME.stop
  end
  
end
[/pre]

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2017-10-5 21:32:38 | 显示全部楼层
233 和 243 行
LEFT 和 RIGHT 改成 UP 和 DOWN

评分

参与人数 1星屑 +30 收起 理由
fux2 + 30 认可答案

查看全部评分

回复

使用道具 举报

梦石
1
星屑
5154
在线时间
1004 小时
注册时间
2012-5-14
回帖
44

开拓者

 楼主| 发表于 2017-10-5 21:38:23 | 显示全部楼层
喵呜喵5 发表于 2017-10-5 21:32
233 和 243 行
LEFT 和 RIGHT 改成 UP 和 DOWN

谢谢帮助。
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部