屏幕上的Flixel游戏

时间:2013-11-09 11:15:45

标签: user-interface game-engine flixel

我是游戏开发的新手,但熟悉编程语言。我已经开始使用Flixel,并且有一个分数和生命的分组游戏。

如果玩家的生命耗尽,我只能坚持如何在屏幕上创建新的屏幕/游戏。我希望这个过程如下:

  1. 检查 IF 生命等于为0
  2. 暂停游戏并显示一个新屏幕(可能是透明的),上面写着“游戏结束
  3. 当用户点击或点击 ENTER 重新启动关卡时
  4. 以下是我目前更新生活的功能:

    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;
            }
        }
    }
    

1 个答案:

答案 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,而不是必须更改所有其他对象单独更新。非常高级的东西,但值得学习它。