from: http://bbs.9ria.com/thread-77302-1-1.html
演示程序
http://www.adamatomic.com/canabalt/
http://www.flixel.org/mode/
Flixel横板游戏制作教程(八)—MovingPlatforms(移动平台)
Flixel横板游戏制作教程(八)—MovingPlatforms(移动平台)
本教程是接着Flixel横板游戏制作教程(七)—VictoryState(胜利状态)来做的。
移动平台是很多横板游戏里都存在的,下面开始来做吧~
先看移动平台类MovingPlatform :
package { import org.flixel.FlxObject; import org.flixel.FlxTileblock; /** * ... * @author zb */ public class MovingPlatform extends FlxTileblock { //平台水平移动的最大范围 public var horizonMoving:uint; //平台垂直移动的最大范围 public var verticalMoving:uint; //平台的初始 x 坐标 public var stX:int; //平台的初始 y 坐标 public var stY:int; //平台垂直方向的标识 private var velFacing:uint; /** * 构造方法 * @param X 初始 x 坐标 * @param Y 初始 y 坐标 * @param Width 平台的宽度 * @param Height 平台的高度 * @param HM 平台水平移动的最大范围 * @param VM 平台垂直移动的最大范围 * @param randomPos 是否使用随机移动位置,就是说平台是否从范围内的某个点开始移动 */ public function MovingPlatform(X:int, Y:int, Width:uint, Height:uint,HM:uint,VM:uint,randomPos:Boolean=true):void { //先调用super super(X, Y, Width, Height); //赋值初始 坐标 stX = X; stY = Y; //赋值水平和垂直最大移动范围 horizonMoving = HM; verticalMoving = VM; //设置最大速度以及速度值,这里最大速度是用于给正反移动方向的速度赋值 maxVelocity.x = HM * 0.2; maxVelocity.y = VM * 0.2; velocity.x = maxVelocity.x; velocity.y = maxVelocity.y; //facing在这里作为水平方向的标识,默认向右 facing = RIGHT; //垂直方向标识,DOWN 和 UP 是flxSprite的静态变量,默认向下 velFacing = DOWN; //如果设置了 randomPos 为 true if (randomPos) { //那么x 和 y 的位置就设置成 范围内的 某个随机点 x = Math.random() * HM + stX; y = Math.random() * VM + stY; } } override public function update():void { //当平台 x 坐标大于最大水平范围 且方向为 右时 if (x > (stX+horizonMoving) && facing==RIGHT) { //将 x 轴的坐标设置为 负值,即向左移动 velocity.x = -maxVelocity.x; //设置 facing方向 为 左 facing = LEFT; }else if (x < stX && facing==LEFT) { //如果 x 坐标小于初始 坐标,就设置速度 向右 velocity.x = maxVelocity.x; facing = RIGHT; } if (y > (stY+verticalMoving) && velFacing==DOWN) { //当 y 坐标大于 垂直最大范围,且方向向下 //将 y 速度设置 向上,velFacing 向上 velocity.y = -maxVelocity.y; velFacing = UP; }else if (y < stY && velFacing==UP) { //当 y 坐标小于 垂直最大范围,且方向向上 //将 y 速度设置 向下,velFacing 向下 velocity.y = maxVelocity.y; velFacing = DOWN; } //别忘了 super.update(); } } }
接着是 GameState 类:
package { import org.flixel.FlxG; import org.flixel.FlxGroup; import org.flixel.FlxObject; import org.flixel.FlxState; import org.flixel.FlxText; import org.flixel.FlxTileblock; import org.flixel.FlxU; /** * ... * @author zb */ public class GameState extends FlxState { //*********已有的内容************// override public function create():void { //*********已有的内容************// //注释掉 //addRandomMap(); //注释掉 //addEnemies(); //注释掉 //addEnemyCounter(); //加入移动平台 addMovingPlatForms(); } //*********已有的内容************// private function addMovingPlatForms():void { //这个判断主要是配合教程来做 //如果使用了 addRandomTile 方法的话,这里就需要加个判断。。 //为了方便查看移动平台的效果,建议 注释掉 addRandomTile 方法 if (levels==null) { levels = new FlxGroup(); } //加入一个地板。。。 var tile:FlxTileblock = new FlxTileblock(0, 200, 640, 20); tile.loadTiles(tileImg); levels.add(tile); //这个是水平和垂直方向都移动的平台 tile = new MovingPlatform(240, 30, 8 * 20, 8*3,150,140,false); tile.loadTiles(tileImg); levels.add(tile); //只 水平移动的平台 tile = new MovingPlatform(100, 170, 8 * 10, 8*3,250,0); tile.loadTiles(tileImg); levels.add(tile); //只垂直移动的平台 tile = new MovingPlatform(120, 0, 8 * 10, 8*3,0,120); tile.loadTiles(tileImg); levels.add(tile); add(levels); } override public function update():void { //*********已有的内容************// //注释掉 //FlxU.collide(enemyGroup, levels); //注释掉 //FlxU.overlap(bullets, enemyGroup, hitEnemy); //注释掉 //checkEnemyCount(); //还是要提醒下,别忘了加上。。。 super.update(); } //*********已有的内容************// } }
相关推荐
标题中的“Flixel横板游戏制作教程(一)— HelloFlixel”指的是一个针对初学者的游戏开发系列教程,重点介绍了如何使用Flixel框架创建2D横版游戏。Flixel是一款开源的ActionScript库,适用于Flash平台,但现在也...
在"Flixel横板游戏制作教程(二)— AddingPlayer"中,我们将深入学习如何使用Flixel框架创建一个2D横向滚动的游戏。Flixel是一个开源的ActionScript 3库,特别适合开发2D游戏,它提供了丰富的功能,如精灵动画、...
在本教程中,“Flixel横板游戏制作教程(三)— Adding Weapons”将带领我们探索如何在基于Flixel框架的2D横版游戏中添加武器系统。Flixel是一个用ActionScript 3编写的开源游戏库,适用于Flash平台,但也可以通过...
在本教程“Flixel横板游戏制作教程(五)— Enemies”中,我们将深入学习如何在使用Flixel框架创建的2D横版游戏中添加敌人。Flixel是一个流行的开源ActionScript 3库,常用于开发2D游戏,尤其适用于Flash平台。尽管...
最后,`Flixel横板游戏制作教程(十一)—JetPack(飞行背包).doc`文档应该详细解释了整个过程,包括代码示例和步骤指南,帮助开发者理解如何集成飞行背包功能。 通过这个教程,开发者不仅可以学习到Flixel框架的...
文档`Flixel横板游戏制作教程(九)—SquashingthePlayer(移动平台).doc`详细解释了如何实现挤压效果,特别是针对移动平台的特殊情况。阅读这份文档将有助于理解如何在Flixel中应用挤压效果,以及如何处理移动平台...
Flixel是啥?一个AS3的2D游戏引擎,主要功能为: •同屏显示更多元素 •通过外部文件和图片创建Tilemap ...本教程是根据一个老版本(版本为 1.27)的教程改写而成的,本教程的Flixel版本为 2.43的。
总之,本教程通过`Flixel横板游戏制作教程(七)—VictoryState(胜利状态).doc`文档,详细讲解了如何在Flixel环境中创建和管理游戏的不同状态,特别是胜利状态的实现。通过学习这些内容,开发者可以更好地理解和...
### Flixel横版游戏制作教程 #### 一、Flixel 游戏框架简介 Flixel是一款基于Adobe Flash的开源2D游戏开发框架,它由Adam “Atomic” Saltsman创建,广泛应用于Flash游戏的开发。Flixel简化了许多常见的游戏开发...
在本教程中,我们将探索如何在使用Flixel框架创建的横版游戏中实现Pickups(拾取道具)功能。Flixel是一个强大的2D游戏开发库,为ActionScript 3和Haxe开发者提供了丰富的功能,使得游戏开发变得更加简单。在这个...
在本教程中,我们将深入探讨如何在Flixel框架中集成音效与音乐,以创建一个生动有趣的横版游戏。Flixel是一个流行的开源ActionScript 3库,它为开发2D游戏提供了丰富的功能,包括图形渲染、碰撞检测以及音频处理。 ...
标题 "flixel platform game example" 暗示我们讨论的是一个使用Flixel库创建的平台游戏示例。Flixel是一个开源的ActionScript 3(AS3)框架,专门用于开发2D游戏。Flixel提供了丰富的功能,如精灵动画、物理引擎、...
`Flixel横板游戏制作教程(四)— RandomlyLevels .doc`是一个文档,可能详细介绍了如何创建随机生成的关卡,这是很多游戏增加重玩价值和挑战性的重要手段。学习如何动态生成关卡布局,可以使游戏更具吸引力。 最后...
ActionScript是Adobe Flash Platform的主要编程语言,因此Flixel主要与Flash Player和Adobe AIR平台相兼容,使得开发者可以构建丰富的交互式游戏内容,适用于网页和桌面应用。 Flixel的核心特性包括: 1. **高性能...
Flixel是一个强大的开源游戏开发框架,专门针对Adobe Flash平台设计。它以其高效、轻量级和易用性而受到开发者们的青睐。Flixel以其丰富的功能集,为创建2D游戏提供了全面的支持,包括精灵动画、物理系统、音频处理...
**Flash Flixel游戏引擎详解** Flash Flixel是一款强大的开源游戏引擎,专为创建2D像素艺术风格的游戏而设计,让人联想到经典的Game Boy Advance(GBA)游戏。Flixel以其简单易用和丰富的功能集而受到游戏开发者们...
《flixel_as3小游戏(开源)》是一款基于Adobe Flash平台,使用ActionScript 3(AS3)编程语言和flixel框架开发的开源游戏合集。这个项目为游戏开发者和AS3爱好者提供了一个宝贵的学习资源,它包含四个不同类型的小...