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(); } } } }
相关推荐
Flixel是啥?一个AS3的2D游戏引擎,主要功能为: •同屏显示更多元素 •通过外部文件和图片创建Tilemap ...本教程是根据一个老版本(版本为 1.27)的教程改写而成的,本教程的Flixel版本为 2.43的。
NULL 博文链接:https://chaimzane.iteye.com/blog/1853891
NULL 博文链接:https://chaimzane.iteye.com/blog/1853889
NULL 博文链接:https://chaimzane.iteye.com/blog/1853901
NULL 博文链接:https://chaimzane.iteye.com/blog/1853898
NULL 博文链接:https://chaimzane.iteye.com/blog/1853893
NULL 博文链接:https://chaimzane.iteye.com/blog/1853895
NULL 博文链接:https://chaimzane.iteye.com/blog/1853899
学习笔记兼教程用。来自网上。应该是天地会……
NULL 博文链接:https://chaimzane.iteye.com/blog/1853897
NULL 博文链接:https://chaimzane.iteye.com/blog/1853896
flixel platform game source code
Flixel游戏框架初探,Flixel游戏框架介绍
Flixel AS3游戏引擎
Flixel 是开源的游戏引擎,用于制作类似GBA游戏的小游戏, http://flixel.org/ Flixel 是简单易学的游戏引擎,可以从它入手学习游戏开发
Flixel-flash开源游戏引擎。 将文件夹内的org文件夹复制到src文件夹,即可import。
Flixel-android开源游戏开发引擎。 该文件为jar文件,需要java运行环境,可双击执行,然后生成android开发源码,会生成3个文件夹,依次导入到eclipse中即可。 flixelgame---游戏开发主要文件夹。 flixelgame-android...
一个非常好用的Flixel游戏引擎,常用于制作RPG类的小游戏,该文浅显易懂