from: http://bbs.9ria.com/thread-77302-1-1.html
演示程序
http://www.adamatomic.com/canabalt/
http://www.flixel.org/mode/
Flixel横板游戏制作教程(九)—SquashingthePlayer(挤压Player)
Flixel横板游戏制作教程(九)—SquashingthePlayer(移动平台)
本教程是接着Flixel横板游戏制作教程(八)—MovingPlatforms(移动平台)来做的。
平台挤压player,然后player受到高伤害以至于 挂掉。。
下面开始教程了。
先看到 Player 类:
package
{
import org.flixel.FlxG;
import org.flixel.FlxGroup;
import org.flixel.FlxObject;
import org.flixel.FlxSprite;
/**
* ...
* @author zb
*/
public class Player extends FlxSprite
{
//*********已有的内容************//
//加入玩家 挂掉时的 音效
[Embed(source = 'media/asplode.mp3')]
protected var killSnd:Class;
//*********已有的内容************//
//重写一下 kill方法
override public function kill():void
{
//主要是加入一个 播放 挂掉时的音效
FlxG.play(killSnd);
super.kill();
}
}
}
然后是 GameState 类:
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
{
//**********已有的内容*************//
override public function update():void
{
//**********已有的内容*************//
//使用 overlap 的方法,检测 玩家与平台重叠时
//就会将 player 挤压到 挂掉
FlxU.overlap(player, levels, squashingthePlayer);
//还是要提醒下,别忘了加上。。。
super.update();
}
private function squashingthePlayer(obj1:FlxSprite,obj2:FlxSprite):void
{
//这里让 player 受到 1000点的伤害
//player 默认 生命值 为 10点
//这样 player 就会被 kill
obj1.hurt(1000);
}
//**********已有的内容*************//
}
}