フレームカウント利用法

50 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2008/04/30(水) 21:30:18 ID:D/gzQw04
VXの質問です

イベントコマンドのスクリプトで、毎フレーム処理したい場合にはどうすればいいのでしょうか
例えば、メッセージ表示→スクリプトでSpriteが上から落ちてくる(毎フレームsprite.y+=1される)→スクリプトが条件によってループを抜ける→次のイベントコマンド(メッセージ表示など)を実行
などとやりたいのですが
RGSS2勉強中なので考え方がおかしいかもしれませんが、おねがいします
59 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2008/05/01(木) 09:42:39 ID:1Serz5an
>>50
VXは持ってないから詳しいことはわからんけど
XPだとたとえば>>58にあるように

Graphics.frame_count #プレイ時間計測用のフレームカウント

の数値がゲーム中、1フレームに1ずつ増加してる。
これを利用すれば毎フレームの処理を行う方法もいくつか思いつくだろうと思う。
VXでも変数名は違うかもしれないけど似たようなものは似たような場所を探せば多分あるはず
60 名前: 50 [sage] 投稿日: 2008/05/01(木) 12:44:24 ID:O/CIwA/N
>>59
VXでもGraphics.frame_countでした

[メッセージイベントコマンド]

[スクリプトイベントコマンド]
start = Graphics.frame_count
loop do
 sprite.y = Graphics.frame_count - start
end

[メッセージイベントコマンド]

こんな感じでしょうか?
でもこれだとメッセージ→スプライトの最終フレーム表示→メッセージ
となってしまいます

[スクリプトイベントコマンド]
sprite.y += 1
[スクリプトイベントコマンド]
sprite.y += 1
[スクリプトイベントコマンド]
sprite.y += 1
これでは冗長ですし、スレッドループを中断しておくyieldのような機構はないのでしょうか
62 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2008/05/01(木) 15:15:05 ID:1Serz5an
よくわからないけどこういうことじゃないん?

◆スクリプト:@sprite = Sprite.new
         @sprite.bitmap =
         Bitmap.new(\"Graphics/Battlers/075-Devil01\")
◆文章:雑魚モンスターのスプライトを
◆選択肢の表示:消す, 下に動かす
: [消す]の場合
  ◆スクリプト:@sprite.dispose
  ◆文章:消去完了
  ◆
: [下に動かす]の場合
  ◆ウェイト:5フレーム
  ◆スクリプト:start = Graphics.frame_count
  :       :n = 0
  :       :while n < 100
  :       : Graphics.update
  :       : n = Graphics.frame_count - start
  :       : @sprite.y = n
  :       :end
  ◆文章:移動完了
  ◆
: 分岐終了