我对游戏开发很陌生,但对编程语言很熟悉。我已经开始使用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;
}
}
}发布于 2013-11-11 14:58:23
做这件事有很多种方法。
您可以使用不同的FlxStates,就像我在另一篇文章的答案:使用Flixel创建用户界面中所描述的那样,尽管您必须聪明地传递分数或其他任何东西,或者使用注册表类型设置
如果您想让它像上面所描述的那样使用透明的覆盖屏幕,您可以尝试这样的方法(请记住,您的项目的具体细节可能有所不同,我只是想给您一个想法):
首先,确保您有良好的逻辑来启动一个级别,假设它是一个名为StartLevel的函数。
您需要定义一个标记--只是一个布尔值--跟踪游戏是否仍在进行:private var _isGameOver:Boolean;位于StartLevel()的最末端,将其设置为false。
在你的create()函数中,为你的PlayState构建一个新的FlxGroup,它在你的游戏屏幕上包含所有你想要的东西-一些文本,一个图像,和一些东西,“按回车来重新启动”(或者其他什么)。然后将其设置为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.根据游戏的设置方式,您还可能希望将组的scrollFactor中的对象设置为0--如果游戏屏幕滚动:
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();请记住,如果您在其他任何地方都有响应用户输入的功能,比如player对象或其他什么,您可能需要更改他们的update()函数来检查该标志。
然后,您最不需要做的事情是在loseLive()逻辑中:
if (lives_count == 0)
{
_isGameOver = true;
grpGameOver.visible = true;
}
else
...这样就行了!
我强烈建议您花一些时间在不同的教程和示例项目上,以便对Flixel有一种更好的感觉。光子风暴有一些伟大的材料可以玩(尽管他已经跳到了HTML5游戏中)
我还想指出的是,如果您对Flixel处理更新的方式感到满意,您可以非常聪明地使用状态的update()函数,并让它只调用grpGameOver对象的更新,而不必单独更改所有其他对象的更新。相当先进的东西,但值得学习。
https://stackoverflow.com/questions/19875293
复制相似问题