スポンサーサイト

 --------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
カテゴリ :スポンサー広告 トラックバック(-) コメント(-)

戦闘速度が遅い!

 2011-10-20
VXの気になるところといえば、バトルテンポの悪さ。
とりあえず、戦闘アニメの速度を速くしてみるよ。

戦闘アニメは、たぶん実際の4分の1フレームで動いてると思います。
そこで、2分の1フレームにすれば2倍速になるはず!
class Sprite_Base
FRAME = 2
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
def update
super
if @animation != nil
@animation_duration -= 1
if @animation_duration % FRAME == 0
update_animation
end
end
@@animations.clear
end
#--------------------------------------------------------------------------
# ● アニメーションの開始
#--------------------------------------------------------------------------
def start_animation(animation, mirror = false)
dispose_animation
@animation = animation
return if @animation == nil
@animation_mirror = mirror
@animation_duration = @animation.frame_max * FRAME + 1
load_animation_bitmap
@animation_sprites = []
if @animation.position != 3 or not @@animations.include?(animation)
if @use_sprite
for i in 0..15
sprite = ::Sprite.new(viewport)
sprite.visible = false
@animation_sprites.push(sprite)
end
unless @@animations.include?(animation)
@@animations.push(animation)
end
end
end
if @animation.position == 3
if viewport == nil
@animation_ox = 544 / 2
@animation_oy = 416 / 2
else
@animation_ox = viewport.rect.width / 2
@animation_oy = viewport.rect.height / 2
end
else
@animation_ox = x - ox + width / 2
@animation_oy = y - oy + height / 2
if @animation.position == 0
@animation_oy -= height / 2
elsif @animation.position == 2
@animation_oy += height / 2
end
end
end
#--------------------------------------------------------------------------
# ● アニメーションの更新
#--------------------------------------------------------------------------
def update_animation
if @animation_duration > 0
frame_index = @animation.frame_max
frame_index -= (@animation_duration + (FRAME - 1)) / FRAME
animation_set_sprites(@animation.frames[frame_index])
for timing in @animation.timings
if timing.frame == frame_index
animation_process_timing(timing)
end
end
else
dispose_animation
end
end
#--------------------------------------------------------------------------
# ● SE とフラッシュのタイミング処理
# timing : タイミングデータ (RPG::Animation::Timing)
#--------------------------------------------------------------------------
def animation_process_timing(timing)
timing.se.play
case timing.flash_scope
when 1
self.flash(timing.flash_color, timing.flash_duration * FRAME)
when 2
if viewport != nil
viewport.flash(timing.flash_color, timing.flash_duration * FRAME)
end
when 3
self.flash(nil, timing.flash_duration * FRAME)
end
end
end


ウェイト時間も半分に調節してみました。
class Scene_Battle
def wait(duration, no_fast = false)
duration /= 2
for i in 0...duration
update_basic
break if not no_fast and i >= duration / 2 and show_fast?
end
end
end
これだと、メッセージが読めないので、
自動送りじゃなくて手動にすればいいのかも。

ウェイト時間が20よりも長い場合は、キー入力待ちに変更します。
class Scene_Battle
def wait(duration, no_fast = false)
if !no_fast && duration > 20
@message_window.pause = true
begin
update_basic
end until show_fast?
@message_window.pause = false
else
for i in 0...duration
update_basic
break if not no_fast and i >= duration / 2 and show_fast?
end
end
end
end

手動より自動の方が良い。
でも、デフォの早送りだと遅いって人は、i >= duration / 2 の部分を変更すると良いかも。
これは、指定されたウェイト時間が半分は過ぎないと早送りしないという判定になります。
i >= 5 とかにすると最低でも5フレームはウェイトをかける処理になります。
コメント




 

 ※ コメント内にURLを含めるには、バッククォート(`)をURLの直前に付け加えてください。


管理人のみ閲覧許可 [?]

トラックバック
トラックバックURL:
http://cacaosoft.blog42.fc2.com/tb.php/589-189da282
≪ トップページへこのページの先頭へ  ≫
カレンダー
04 << 2017/05 >> 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -

カテゴリー
最近の記事
02/28 お返事
02/14 お返事
01/21 お返事
01/12 更新情報
11/28 お返事

最近のコメント
03/16 お返事
01/21 お返事
11/30 z座標
11/20 z座標
08/03 お返事

タグクラウド

リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。