`

Flixel横板游戏制作教程(十)—Pickups(拾取道具)

 
阅读更多

from: http://bbs.9ria.com/thread-77302-1-1.html

 

演示程序

http://www.adamatomic.com/canabalt/

http://www.flixel.org/mode/

 

Flixel横板游戏制作教程(十)—Pickups(拾取道具)

Flixel横板游戏制作教程(十)—Pickups(拾取道具)
本教程是接着Flixel横板游戏制作教程(九)—SquashingthePlayer(挤压Player)来做的。
下面开始制作拾取的道具——金币。
先是金币 Coin 类:

package 
{
        import org.flixel.FlxG;
        import org.flixel.FlxSprite;
        
        /**
         * ...
         * @author zb
         */
        public class Coin extends FlxSprite 
        {
                //金币素材
                [Embed(source = 'media/coin.png')]
                protected var coinImg:Class;
                //拾取金币时的音效
                [Embed(source = 'media/pickup.mp3')]
                protected var getSnd:Class;
                //金币是否已经被拾取的 标识
                public var hasGotten:Boolean = false;
                public function Coin(px:Number,py:Number):void 
                {
                        loadGraphic(coinImg, true, false, 8, 8);
                        //设置coin的坐标
                        //这里 y 坐标向上移动一个 coin 的高度,
                        //主要是方便 如果将coin 直接放在平台上时不会与平台重叠
                        this.y -= (px + this.height);
                        this.x = px;
                        //金币动画
                        addAnimation('roll', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 12);
                        play('roll');
                        //给金币一个 y 轴方向的加速度以及最大速度
                        //因为本教程是让金币从高空中落下
                        acceleration.y = 300;
                        maxVelocity.y = 300;
                }
                
                //获取金币时的方法
                public function getCoin():void 
                {
                        //获取金币时 设置为 true
                        hasGotten = true;
                        //同时将金币的y 速度 设置为 向上
                        //让金币获取时 有个 向上弹起的动作
                        this.velocity.y = -0.5 * this.acceleration.y;
                        //播放获取金币时的音效。
                        FlxG.play(getSnd);
                }
                
                //重写 update
                override public function update():void 
                {
                        //这里判断 当 y 速度大于50,同时已经被 获取时
                        //也就是在金币 被 player 获取后,在弹起下落过程时
                        if (velocity.y>=50 && hasGotten) 
                        {
                                //将金币 kill 掉
                                this.kill();
                        }
                        //别忘了
                        super.update();
                }
        }
        
}

 下面是GameStage 类:

package 
{
        import org.flixel.FlxG;
        import org.flixel.FlxGroup;
        import org.flixel.FlxObject;
        import org.flixel.FlxSprite;
        import org.flixel.FlxState;
        import org.flixel.FlxText;
        import org.flixel.FlxTileblock;
        import org.flixel.FlxU;
        
        /**
         * ...
         * @author zb
         */
        public class GameState extends FlxState 
        {
                //*********已有的内容************//
                
                //金币组
                private var coinGroup:FlxGroup;
                override public function create():void 
                {
                        //*********已有的内容************//
                        
                        //加入可以拾取的金币
                        addCoins();
                }
                
                //*********已有的内容************//
                
            override public function update():void 
                {
                        //*********已有的内容************//
                        
                        //注意,如果 collide 方法 放在 overlap 方法之后,那么 coin 不会弹起来
                        //因为如果先是 overlap 判断,然后在判断 collide 的话,顺序是
                        //overlap 时,给 coin 赋值 y 的速度,但是并没有update数据,
                        //接着判断 collide,此时因为 coin 与地面还是碰撞着的,
                        //所以 collide 判断又把 coin 的 y 速度变为了0,
                        //下面接着的update 刷新了数据,此时coin y速度为0,coin 也就不会弹起来
                        FlxU.collide(coinGroup, levels);
                        FlxU.overlap(player, coinGroup, getCoin);
                        
                        //还是要提醒下,别忘了加上。。。
                        super.update();
                }
                
                //*********已有的内容************//
                
                private function addCoins():void
                {
                        coinGroup = new FlxGroup();
                        var coin:Coin;
                        for (var i:int = 0; i < 5; i++) 
                        {
                                coin = new Coin(10 + i * 30, 20);
                                coinGroup.add(coin);
                        }
                        add(coinGroup);
                }
                
                private function getCoin(ob1:FlxSprite,ob2:FlxSprite):void 
                {
                        var coin:Coin = ob2 as Coin;
                        //当金币没有被获取时,才获取金币
                        if (!coin.hasGotten) 
                        {
                                coin.getCoin();
                        }
                }
        }
        
}

 

 

 

  • 大小: 6.8 KB
分享到:
评论

相关推荐

    Flixel 横板游戏制作教程(一)— HelloFlixel ...

    标题中的“Flixel横板游戏制作教程(一)— HelloFlixel”指的是一个针对初学者的游戏开发系列教程,重点介绍了如何使用Flixel框架创建2D横版游戏。Flixel是一款开源的ActionScript库,适用于Flash平台,但现在也...

    Flixel横板游戏制作教程(二)— AddingPlayer

    在"Flixel横板游戏制作教程(二)— AddingPlayer"中,我们将深入学习如何使用Flixel框架创建一个2D横向滚动的游戏。Flixel是一个开源的ActionScript 3库,特别适合开发2D游戏,它提供了丰富的功能,如精灵动画、...

    Flixel横板游戏制作教程(三)— AddingWeapons

    在本教程中,“Flixel横板游戏制作教程(三)— Adding Weapons”将带领我们探索如何在基于Flixel框架的2D横版游戏中添加武器系统。Flixel是一个用ActionScript 3编写的开源游戏库,适用于Flash平台,但也可以通过...

    Flixel横板游戏制作教程(五)— Enemies

    在本教程“Flixel横板游戏制作教程(五)— Enemies”中,我们将深入学习如何在使用Flixel框架创建的2D横版游戏中添加敌人。Flixel是一个流行的开源ActionScript 3库,常用于开发2D游戏,尤其适用于Flash平台。尽管...

    Flixel横板游戏制作教程(八)—MovingPlatforms(移动平台)

    文档`Flixel横板游戏制作教程(八)—MovingPlatforms(移动平台).doc`提供了详细的步骤和示例代码,帮助开发者理解移动平台的实现过程。通过阅读这份文档,你可以学习到如何编写`MovingPlatform`类的代码,以及...

    Flixel横板游戏制作教程(十一)—JetPack(飞行背包)

    最后,`Flixel横板游戏制作教程(十一)—JetPack(飞行背包).doc`文档应该详细解释了整个过程,包括代码示例和步骤指南,帮助开发者理解如何集成飞行背包功能。 通过这个教程,开发者不仅可以学习到Flixel框架的...

    Flixel 横板游戏制作教程(完结)

    Flixel是啥?一个AS3的2D游戏引擎,主要功能为: •同屏显示更多元素 •通过外部文件和图片创建Tilemap ...本教程是根据一个老版本(版本为 1.27)的教程改写而成的,本教程的Flixel版本为 2.43的。

    Flixel横板游戏制作教程(九)—SquashingthePlayer(挤压Player)

    文档`Flixel横板游戏制作教程(九)—SquashingthePlayer(移动平台).doc`详细解释了如何实现挤压效果,特别是针对移动平台的特殊情况。阅读这份文档将有助于理解如何在Flixel中应用挤压效果,以及如何处理移动平台...

    Flixel横板游戏制作教程(七)—VictoryState(胜利状态)

    总之,本教程通过`Flixel横板游戏制作教程(七)—VictoryState(胜利状态).doc`文档,详细讲解了如何在Flixel环境中创建和管理游戏的不同状态,特别是胜利状态的实现。通过学习这些内容,开发者可以更好地理解和...

    Flixel 横板游戏制作教

    ### Flixel横版游戏制作教程 #### 一、Flixel 游戏框架简介 Flixel是一款基于Adobe Flash的开源2D游戏开发框架,它由Adam “Atomic” Saltsman创建,广泛应用于Flash游戏的开发。Flixel简化了许多常见的游戏开发...

    Flixel横板游戏制作教程(六)—SoundsandMusic(音效与音乐)

    在本教程中,我们将深入探讨如何在Flixel框架中集成音效与音乐,以创建一个生动有趣的横版游戏。Flixel是一个流行的开源ActionScript 3库,它为开发2D游戏提供了丰富的功能,包括图形渲染、碰撞检测以及音频处理。 ...

    flixel platform game example

    标题 "flixel platform game example" 暗示我们讨论的是一个使用Flixel库创建的平台游戏示例。Flixel是一个开源的ActionScript 3(AS3)框架,专门用于开发2D游戏。Flixel提供了丰富的功能,如精灵动画、物理引擎、...

    flixel 游戏源代码

    `Flixel横板游戏制作教程(四)— RandomlyLevels .doc`是一个文档,可能详细介绍了如何创建随机生成的关卡,这是很多游戏增加重玩价值和挑战性的重要手段。学习如何动态生成关卡布局,可以使游戏更具吸引力。 最后...

    Flixel游戏框架初探

    ### Flixel游戏框架初探 #### 一、Flixel框架简介 Flixel是一款完全开源的Flash游戏开发框架,适用于2D横版动作类游戏的开发。它提供了丰富的功能,包括动画处理、物体运动、2D碰撞检测、Tilemap支持以及场景管理...

    Flixel AS3游戏引擎

    总的来说,Flixel AS3游戏引擎是ActionScript开发者构建2D游戏的强大工具,它提供了全面的游戏开发功能,同时保持了较低的学习曲线,使得小型团队和个人开发者也能制作出高质量的游戏作品。结合其开源社区的支持,...

    Flixel-flash开源游戏引擎

    Flixel是一个强大的开源游戏开发框架,专门针对Adobe Flash平台设计。它以其高效、轻量级和易用性而受到开发者们的青睐。Flixel以其丰富的功能集,为创建2D游戏提供了全面的支持,包括精灵动画、物理系统、音频处理...

    flash flixel游戏引擎

    **Flash Flixel游戏引擎详解** Flash Flixel是一款强大的开源游戏引擎,专为创建2D像素艺术风格的游戏而设计,让人联想到经典的Game Boy Advance(GBA)游戏。Flixel以其简单易用和丰富的功能集而受到游戏开发者们...

    Flixel创建一个自上而下RPG游戏

    在本教程中,我们将探讨如何使用Flixel游戏引擎来创建一个简单的自上而下的角色扮演游戏(RPG)。Flixel是一款基于ActionScript 3的2D游戏开发框架,以其简单易用和强大的功能而闻名。对于那些希望使用AS3进行游戏开发...

Global site tag (gtag.js) - Google Analytics