在我正在制作的游戏中,我需要根据时间制作一个评分系统。
如果你在游戏的第一秒获得了一场比赛。这场比赛比我在最后一场比赛中获得一场比赛更有价值。
换句话说,你做得越快,获得的分数就越多。有谁知道如何实现这一目标?我知道每个级别的总时间。
游戏是实时的,所以需要看到它在游戏早期显示高分,并随着时间的推移逐渐降低。
感谢。
答案 0 :(得分:2)
您可以使用Timer Class。所以你应该用类似的东西结束:
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();
所以在任何时候,你只需要在总分中加上奖金。
答案 1 :(得分:1)
定义每个级别的最大时间然后做一些数学技巧:
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