查看: 3096|回复: 5

[已经解决] 请问如何在标题画面制作漂浮光点效果?

[复制链接]
梦石
0
星屑
414
在线时间
41 小时
注册时间
2020-7-28
回帖
14
发表于 2020-8-1 11:30:10 | 显示全部楼层 |阅读模式

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

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

×
如题,想在标题画面上制作一个漂浮光点的效果,可以直接在RMVA中设置实现吗,或者有没有相关的脚本?
求个解答。非常感谢TT
梦石
0
星屑
29901
在线时间
5734 小时
注册时间
2016-3-8
回帖
1653
发表于 2020-8-1 12:53:53 | 显示全部楼层
回复

使用道具 举报

梦石
0
星屑
414
在线时间
41 小时
注册时间
2020-7-28
回帖
14
 楼主| 发表于 2020-8-1 14:38:36 | 显示全部楼层
alexncf125 发表于 2020-8-1 12:53
https://rpg.blue/thread-397218-1-1.html
https://rpg.blue/forum.php?mod=viewthread&tid=304811

!!非常感谢!!!
回复

使用道具 举报

梦石
0
星屑
414
在线时间
41 小时
注册时间
2020-7-28
回帖
14
 楼主| 发表于 2020-8-1 14:58:52 | 显示全部楼层
alexncf125 发表于 2020-8-1 12:53
https://rpg.blue/thread-397218-1-1.html
https://rpg.blue/forum.php?mod=viewthread&tid=304811

_(:з」∠)_那个,其实是想问一下能不能直接在系统默认标题画面实现,试过那个脚本但是实在是太卡了()
回复

使用道具 举报

梦石
0
星屑
29901
在线时间
5734 小时
注册时间
2016-3-8
回帖
1653
发表于 2020-8-1 15:33:10 | 显示全部楼层
Azure冰月 发表于 2020-8-1 14:58
_(:з」∠)_那个,其实是想问一下能不能直接在系统默认标题画面实现,试过那个脚本但是实在是太卡了() ...

解压放进Graphics;System里.rar (3.82 KB, 下载次数: 87)
[pre lang="ruby"]=begin
      RGSS3
      
      ★ 光拡散エフェクト ★

      光が広がったり、集まったり、降ったりします。
      天候と似た使い方を想定しています。
      
      イベントコマンドのスクリプトから起動させてください。
      
      ● コマンド一覧 ●==================================================
      start_effect(type)
      --------------------------------------------------------------------
      光拡散エフェクトを開始します。
      引数の値によってエフェクトの種類が決定します
        1  => 中心から発散
        2  => 中心へ収束
        3  => 中央上部から下へ
        4  => 上部全体から下へ
        5  => 右上から左下へ
        
        21 => 不規則な螺旋を描いて上昇
        22 => ゆらゆらと上昇
        23 => 規則正しい螺旋を描いて上昇
        
        31 => 雪
      ====================================================================
      end_effect
      --------------------------------------------------------------------
      エフェクトの終了。画面上のエフェクトをすべて一気に開放します。
      ====================================================================
      end_effect_fade
      --------------------------------------------------------------------
      エフェクトの終了。画面上のエフェクトを少しづつ開放します。
      ====================================================================
      
      ver1.11

      Last Update : 2012/03/24
      02/22 : 「特殊エフェクト - タイトル表示プラグイン」併用時、
         : ニューゲーム選択時にスプライトが解放されない不具合を修正
      ----------------------2019--------------------------
      03/24 : 雪エフェクトの追加
      ----------------------2012--------------------------
      12/17 : RGSS2からの移植
      ----------------------2011--------------------------
      
      ろかん   http://kaisou-ryouiki.sakura.ne.jp/
=end

$rsi ||= {}
$rsi["光拡散エフェクト"] = true

module Reffect
  @@span = false
  def initialize(viewport)
    @sp = [0, 0]     # 初期座標
    @ma = [0.0, 0.0] # 移動角度(ラジアン)
    @rd = 0.0        # 初期座標からの半径
    super(viewport)
    self.blend_type = 1
    @@span ^= true
  end
  def width
    Graphics.width
  end
  def height
    Graphics.height
  end
  def zoom=(value)
    self.zoom_x = self.zoom_y = value
  end
  def setGraphic(filename)
    self.bitmap = Cache.system(filename)
    self.ox = self.bitmap.width / 2
    self.oy = self.bitmap.height / 2
  end
  def setStartPosition(typeX, typeY)
    case typeX
    when 0 # ランダム
      @sp[0] = rand(width + 100) - 50
    when 1 # 画面外(左)
      @sp[0] = -30
    when 2 # 中央
      @sp[0] = width / 2
    when 3 # 画面外(右)
      @sp[0] = width + 30
    end
    case typeY
    when 0 # ランダム
      @sp[1] = rand(height + 50) - 25
    when 1 # 画面外(上)
      @sp[1] = -30
    when 2 # 中央
      @sp[1] = height / 2
    when 3 # 画面外(下)
      @sp[1] = height + 30
    end
    self.x = @sp[0]
    self.y = @sp[1]
  end
  def setMoveAngle(ax, ay = ax)
    @ma[0] = Math.cos(ax * 0.01)
    @ma[1] = Math.sin(ay * 0.01)
  end
  def getX
    @sp[0] + @rd * @ma[0]
  end
  def getY
    @sp[1] + @rd * @ma[1]
  end
  def getZoom
    (@rd * @ma[1] / width / 1.5 + 0.8) * (self.opacity / 200.0)
  end
end

class Game_Temp
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :r_effect_sprites # 特殊効果スプライト群
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias r_effect_initialize initialize
  def initialize
    r_effect_initialize
    @r_effect_sprites = $game_temp ? $game_temp.r_effect_sprites : []
  end
  #--------------------------------------------------------------------------
  # ● 特殊効果スプライトの解放
  #--------------------------------------------------------------------------
  def dispose_r_effect
    @r_effect_sprites.each{|sprite| sprite.dispose}
    @r_effect_sprites = []
  end
end

class Game_System
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor :r_effect_type # 特殊効果の種類
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  alias r_effect_initialize initialize
  def initialize
    r_effect_initialize
    @r_effect_type = 0
  end
  #--------------------------------------------------------------------------
  # ● 特殊効果の開始
  #--------------------------------------------------------------------------
  def start_effect(type)
    $game_temp.dispose_r_effect if @r_effect_type != type
    @r_effect_type = type
  end
  #--------------------------------------------------------------------------
  # ● 特殊効果の終了(瞬時)
  #--------------------------------------------------------------------------
  def end_effect
    $game_temp.dispose_r_effect
    @r_effect_type = 0
  end
  #--------------------------------------------------------------------------
  # ● 特殊効果の終了(フェード)
  #--------------------------------------------------------------------------
  def end_effect_fade
    @r_effect_type = 0
  end
end

class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● 特殊効果の開始
  #--------------------------------------------------------------------------
  def start_effect(type)
    $game_system.start_effect(type)
  end
  #--------------------------------------------------------------------------
  # ● 特殊効果の終了(瞬時)
  #--------------------------------------------------------------------------
  def end_effect
    $game_system.end_effect
  end
  #--------------------------------------------------------------------------
  # ● 特殊効果の終了(フェード)
  #--------------------------------------------------------------------------
  def end_effect_fade
    $game_system.end_effect_fade
  end
end

class Sprite_Reffect_Diffusion < Sprite
  #--------------------------------------------------------------------------
  # ● インクルード Reffect
  #--------------------------------------------------------------------------
  include Reffect
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(viewport)
    super(viewport)
    case $game_system.r_effect_type
    when 1
      @rd = rand(width / 3).to_f
      @moveSpeed = rand(50).next * 0.01 + 0.5
      @existCount = rand(100) + 80
      setStartPosition(2, 2)
      setMoveAngle(rand(2 * Math::PI * 100))
      setGraphic("RE_001")
    when 2
      @rd = rand(width / 3).to_f + 30.0
      @moveSpeed = rand(50).next * -0.01 - 0.5
      @existCount = rand(100) + 90
      setStartPosition(2, 2)
      setMoveAngle(rand(2 * Math::PI * 100))
      setGraphic("RE_001")
    when 3
      @rd = rand(width / 2).to_f
      @moveSpeed = rand(50).next * 0.01 + 0.5
      @existCount = rand(100) + 80
      setStartPosition(2, 1)
      setMoveAngle(rand(2 * Math::PI * 100), rand(Math::PI * 100))
      setGraphic("RE_001")
    when 4
      @rd = rand(width / 2).to_f
      @moveSpeed = rand(50).next * 0.01 + 0.5
      @existCount = rand(100) + 80
      setStartPosition(0, 1)
      setMoveAngle(rand(2 * Math::PI * 100), rand(Math::PI * 100))
      setGraphic("RE_001")
    when 5
      @rd = rand(width / 2).to_f
      @moveSpeed = rand(50).next * 0.01 + 0.5
      @existCount = rand(100) + 120
      setStartPosition(3, 1)
      setMoveAngle(rand(Math::PI * 100) + 90, rand(Math::PI * 100))
      setGraphic("RE_001")
    end
    @maxOpacity = rand(160) + 40
    self.opacity = 1
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    if self.opacity.zero?
      dispose
      $game_temp.r_effect_sprites.delete(self)
    else
      @existCount -= 1
      @rd = [@rd + @moveSpeed, 0.0].max
      self.x = getX
      self.y = getY
      self.zoom = getZoom
      self.opacity = [self.opacity + (@existCount > 0 ? 1 : -1), @maxOpacity].min
    end
  end
end

class Sprite_Reffect_Spiral < Sprite
  #--------------------------------------------------------------------------
  # ● インクルード Reffect
  #--------------------------------------------------------------------------
  include Reffect
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(viewport)
    super(viewport)
    case $game_system.r_effect_type
    when 21
      @rd = rand(200).next.to_f
      @moveSpeed = 5.0 - @rd / 50.0
      @nextAngle = rand(360).to_f
      @collapseSpeed = 1
      setStartPosition(2, 3)
      setGraphic("RE_002")
    when 22
      @rd = rand(40).next.to_f
      @moveSpeed = rand(100).next * 0.01 + 1.0
      @nextAngle = rand(360).to_f
      @collapseSpeed = rand(3).zero? ? 2 : 1
      setStartPosition(0, 3)
      setGraphic("RE_002")
    when 23
      @rd = 180
      @moveSpeed = 1.7
      @nextAngle = @@span ? 0.0 : 180.0
      @collapseSpeed = 0
      setStartPosition(2, 3)
      setGraphic("RE_002")
    end
    @floteY = self.y.to_f
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    if self.y <= -self.oy || self.opacity.zero?
      dispose
      $game_temp.r_effect_sprites.delete(self)
    else
      @nextAngle += [@moveSpeed, 2].min
      @nextAngle = 0.0 if @nextAngle >= 360
      setMoveAngle(@nextAngle * 1.74533)
      self.x = getX
      self.y = (@floteY -= @moveSpeed).round
      self.zoom = getZoom
      self.opacity -= @collapseSpeed
    end
  end
end

class Sprite_Reffect_Snow < Sprite
  #--------------------------------------------------------------------------
  # ● インクルード Reffect
  #--------------------------------------------------------------------------
  include Reffect
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(viewport)
    super(viewport)
    setStartPosition(0, 1)
    setGraphic("RE_003")
    case rand(100)
    when 0..49
      self.zoom = (3 + rand(2)) / 10.0
    when 50..89
      self.zoom = (6 + rand(2)) / 10.0
    when 90..99
      self.zoom = (9 + rand(2)) / 10.0
    end
    self.z = self.zoom_x * 10
    @moveSpeed = self.zoom_x * 1.6
    @floteY = self.y.to_f
    @rd = rand(10).next.to_f
    @nextAngle = rand(360).to_f
    @existCount = 1500
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  def update
    if self.y > height || self.opacity.zero?
      dispose
      $game_temp.r_effect_sprites.delete(self)
    else
      @existCount -= 3
      @nextAngle += [@moveSpeed, 2].min
      @nextAngle = 0.0 if @nextAngle >= 360
      setMoveAngle(@nextAngle * 1.74533)
      self.x = getX
      self.y = (@floteY += @moveSpeed).round
      self.opacity = @existCount
    end
  end
end

class Spriteset_Map
  @@re_add_count = 0
  #--------------------------------------------------------------------------
  # ● 解放
  #--------------------------------------------------------------------------
  alias r_effect_dispose dispose
  def dispose
    r_effect_dispose
    $game_temp.dispose_r_effect
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias r_effect_update update
  def update
    r_effect_update
    update_r_effect
  end
  #--------------------------------------------------------------------------
  # ● 特殊エフェクトの更新
  #--------------------------------------------------------------------------
  def update_r_effect
    unless $game_system.r_effect_type.zero?
      if @@re_add_count.zero?
        case $game_system.r_effect_type
        when  1..10
          sprite = Sprite_Reffect_Diffusion.new(@viewport3)
          @@re_add_count = 10
        when 21..30
          sprite = Sprite_Reffect_Spiral.new(@viewport3)
          @@re_add_count = 10
        when 31..40
          sprite = Sprite_Reffect_Snow.new(@viewport3)
          @@re_add_count = 20
        end
        $game_temp.r_effect_sprites << sprite
      end
      @@re_add_count -= 1
    end
    $game_temp.r_effect_sprites.each{|sprite| sprite.update}
  end
end
[/pre]
[pre lang="ruby"]=begin
      RGSS3
      
      ★特殊エフェクト - タイトル表示プラグイン★
      
      マップで表示することを想定している「光拡散エフェクト」「スクリーンノイズ」
      をタイトルでも表示できるようにします。
      
      ver1.10

      Last Update : 2014/09/05
      09/05 : 「光拡散エフェクト」のエフェクト番号31(雪)の表示に対応していなかった為、修正
      ----------------------2012-------------------------
      01/19 : RGSS2からの移植
      ----------------------2012-------------------------
      
      ろかん   http://kaisou-ryouiki.sakura.ne.jp/
=end

#===========================================
#   設定箇所
#===========================================
module Rokan
module Title_in_Reffect
    # 光拡散エフェクト
    # 有効にする場合は「光拡散エフェクト」を別途導入してください。
    Reffective = true
    ReffectType = 4  # エフェクトの種類を指定
   
    # スクリーンノイズ
    # 有効にする場合は「スクリーンノイズ」を別途導入してください。
    NoiseEffective = false
end
end
#===========================================
#   ここまで
#===========================================

$rsi ||= {}
$rsi["特殊エフェクト - タイトル表示プラグイン"] = true

class Scene_Title < Scene_Base
  #--------------------------------------------------------------------------
  # ● インクルード Rokan::Title_in_Reffect
  #--------------------------------------------------------------------------
  include Rokan::Title_in_Reffect
  #--------------------------------------------------------------------------
  # ● 開始処理
  #--------------------------------------------------------------------------
  alias _reffect_start start
  def start
    _reffect_start
    create_reffect
  end
  #--------------------------------------------------------------------------
  # ● 終了処理
  #--------------------------------------------------------------------------
  alias _reffect_terminate terminate
  def terminate
    _reffect_terminate
    dispose_reffect
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias _reffect_update update unless $!
  def update
    _reffect_update
    update_reffect
  end
  #--------------------------------------------------------------------------
  # ● 特殊エフェクトの作成
  #--------------------------------------------------------------------------
  def create_reffect
    if Reffective
      @re_add_count = 0
      @viewport = Viewport.new
      @viewport.z = 70
      $game_system.r_effect_type = ReffectType
    end
    if NoiseEffective
      $game_temp.r_noise_effect_spriteset = Spriteset_Noise.new
      $game_system.start_noise
    end
  end
  #--------------------------------------------------------------------------
  # ● 特殊エフェクトの解放
  #--------------------------------------------------------------------------
  def dispose_reffect
    if Reffective
      $game_system.r_effect_type = 0
      $game_temp.dispose_r_effect
      @viewport.dispose
    end
    if NoiseEffective && $game_temp.r_noise_effect_spriteset
      $game_system.r_noise_effect = false
      $game_temp.r_noise_effect_spriteset.dispose_noise
    end
  end
  #--------------------------------------------------------------------------
  # ● 特殊エフェクトのフレーム更新
  #--------------------------------------------------------------------------
  def update_reffect
    if Reffective
      unless $game_system.r_effect_type.zero?
        if @re_add_count.zero?
          case $game_system.r_effect_type
          when  1..10
            sprite = Sprite_Reffect_Diffusion.new(@viewport)
            @re_add_count = 10
          when 21..30
            sprite = Sprite_Reffect_Spiral.new(@viewport)
            @re_add_count = 10
          when 31..40
            sprite = Sprite_Reffect_Snow.new(@viewport3)
            @re_add_count = 20
          end
          $game_temp.r_effect_sprites << sprite
        end
        @re_add_count -= 1
      end
      $game_temp.r_effect_sprites.each{|sprite| sprite.update}
    end
    if NoiseEffective && $game_temp.r_noise_effect_spriteset
      $game_temp.r_noise_effect_spriteset.update
    end
  end
  #--------------------------------------------------------------------------
  # ● 背景の作成
  #--------------------------------------------------------------------------
  alias _reffect_create_background create_background
  def create_background
    _reffect_create_background
    @sprite2.z = 80
  end
  #--------------------------------------------------------------------------
  # ● コマンドウィンドウの作成
  #--------------------------------------------------------------------------
  alias _reffect_create_command_window create_command_window
  def create_command_window
    _reffect_create_command_window
    @command_window.z = 95
  end
end[/pre]

点评

非常感谢!!!!!!!!  发表于 2020-8-1 16:13

评分

参与人数 2星屑 +100 赞 +1 收起 理由
VIPArcher + 100 认可答案
Azure冰月 + 1 塞糖

查看全部评分

回复 2 0

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部