我是游戏开发的新手,但熟悉编程语言。我已经开始使用Flixel,并且有一个分数和生命的分组游戏。
如果玩家的生命耗尽,我只能坚持如何在屏幕上创建新的屏幕/游戏。我希望这个过程如下:
以下是我目前更新生活的功能:
private function loseLive(_ball:FlxObject, _bottomWall:FlxObject):void
{
// check for game over
if (lives_count == 0)
{
}
else
{
FlxG:lives_count -= 1;
lives.text = 'Lives: ' + lives_count.toString()
}
}
这是我的主要 game.as :
package
{
import org.flixel.*;
public class Game extends FlxGame
{
private const resolution:FlxPoint = new FlxPoint(640, 480);
private const zoom:uint = 2;
private const fps:uint = 60;
public function Game()
{
super(resolution.x / zoom, resolution.y / zoom, PlayState, zoom);
FlxG.flashFramerate = fps;
}
}
}
答案 0 :(得分:2)
有很多方法可以做到这一点...
您可以使用不同的FlxStates,就像我在其他帖子的回答中所描述的那样:Creating user UI using Flixel,尽管你必须聪明地传递分数或其他任何内容,或使用Registry-type setup
如果您希望它实际上像上面描述的那样工作,使用透明覆盖屏幕,您可以尝试这样的事情(请记住,您的项目的具体细节可能会有所不同,我只是想给你一个想法):
首先,确保你有一个良好的逻辑来启动关卡,让我们说它是一个名为StartLevel
的函数。
您需要定义一个标志 - 只是一个布尔值 - 用于跟踪游戏是否仍在继续:private var _isGameOver:Boolean;
在StartLevel()
的最后,将其设置为{ {1}}。
在false
的{{1}}函数中,构建一个新的create()
,其中包含您在游戏结束屏幕上所需的所有内容 - 一些文字,一张图片和一些内容“按ENTER键重启”(或其他)。然后将其设置为PlayState
。代码可能类似于:
FlxGroup
根据您的游戏设置方式,您可能还想将群组的scrollFactor中的对象设置为0 - 如果您的游戏屏幕完全滚动:
visible = false
在你的grpGameOver = new FlxGroup();
grpGameOver.add(new FlxSprite(10,10).makeGraphic(FlxG.Width-20,FlxG.Height-20,0x66000000)); // just a semi-transparent black box to cover your game screen.
grpGameOver.add(new FlxText(...)); // whatever you want to add to the group...
grpGameOver.visible = false;
add(grpGameOver); // add the group to your State.
功能中,你需要将它分成两部分:一部分用于游戏结束时,一部分用于游戏是否还在继续:
grpGameOver.setAll("scrollFactor", new FlxPoint(0,0));
请记住,如果你有其他地方的用户输入响应 - 比如播放器对象或其他东西,你可能需要更改他们的update()
函数来检查该标志。
然后,您需要做的最后一件事是if (_isGameOver)
{
if (FlxG.keys.justReleased("ENTER"))
{
grpGameOver.visible = false;
StartLevel();
}
}
else
{
... the rest of your game logic that you already have ...
}
super.update();
逻辑:
update()
应该这样做!
我强烈建议您花一些时间学习不同的教程和示例项目,以便更好地了解Flixel。 Photon Storm有一些great material可以使用(即使他已经跳转到HTML5游戏)
我还要注意,如果你对Flixel处理更新的方式感到满意,你可以使用你的状态loseLive()
函数变得非常聪明,并且只在grpGameOver对象上调用update,而不是必须更改所有其他对象单独更新。非常高级的东西,但值得学习它。