1

私が作成しているゲームでは、時間に基づくスコアリング システムを作成する必要があります。

ゲームプレイの最初の 1 秒で一致した場合。その試合は、ゲームプレイの最後の 1 秒で試合に勝った場合よりも多くのポイントに値します。

つまり、レベルを速く進めれば進めるほど、より多くのポイントを獲得できます。これを達成する方法を知っている人はいますか?各レベルの合計時間を知っています。

ゲームはリアルタイムであるため、ゲームの早い段階で高いスコアを示し、時間の経過とともにスコアが減少することを確認する必要があります。

ありがとう。

4

2 に答える 2

2

これにはTimer クラスを使用します。したがって、次のようなもので終了する必要があります。

private var delay:uint = 1000;
private var repeat:uint = 3;
private var timer:Timer = new Timer(delay, repeat);

ティックのリスナーを追加...

timer.addEventListener(TimerEvent.TIMER, timerHandler);
timer.addEventListener(TimerEvent.TIMER_COMPLETE, completeHandler);

// Reduce bonus with time by a percentage
private function timerHandler(e:TimerEvent):void { scoreBonus *= 0.9;  }

// Set bonus to 0
private function completeHandler(e:TimerEvent):void { scoreBonus = 0; }

スコア ボーナスを設定し、ボーナスを開始したいポイントでタイマーを開始します。

scoreBonus = 10;

timer.start();

したがって、いつでも合計スコアにボーナスを追加するだけです。

于 2012-10-23T08:25:02.227 に答える
2

レベルごとの最大時間を定義してから、いくつかの数学のトリックを実行します。

score = Math.max(0, levelMaxTime - timeSpent) * levelScore;

例:

timeSpent = 12; // The player completed the level in 12 seconds
levelMaxTime = 20; // The player has to completed the level within 30 seconds
levelScore = 50; // The player will be awarded of 50 points per remaining second

// Compute the final score
score = Math.max(0, levelMaxTime - timeSpent) * levelScore; // 400 points
于 2012-10-23T08:08:49.297 に答える