教程作者:cls分享站
-
CitrusEngine系列教程一:认识CitrusEngine
-
CitrusEngine系列教程二:结合starling和Box2D开发游戏
-
CitrusEngine系列教程三:使用flash cs 设计关卡
-
CitrusEngine系列教程四:Citrus的2D动画和摄像头
-
CitrusEngine系列教程五:使用PhysicsEditor创建box2d刚体
-
CitrusEngine系列教程六:使用Tiled Map Editor创建地图
............................................................................
终于要做游戏项目了那,之前一直做flex应用开发如pdf在线编辑器 什么的,这次终于轮到游戏了,但我真没什么游戏开发经验,所以近来一直在脑补游戏开发知识,偶然发现在这个引擎,感觉还是蛮不错。至于这个教程就不说为了方便大家什么的大话了,其实也就是为了加深自己的理解,也希望和大家的交流中获得更大进步。好了,不说废话,以下进入正题~
首先什么是CitrusEngine?
Citrus引擎提供了一个快速原型游戏的架构,特别是ACT横版过关类的。内置实现了platform 包,支持角色 (Hero) 、道具盒子(Sensor) 、平台 (platform) 并扩展了 MovingFLatform是自运动的平台。 目前的版本同时封装了原生Starling渲染。对于物理引擎部分,同时支持 box2d、nape、AwayPhysics。此引擎基于MIT开源协议!
CitrusEngine有何特点?
1、可视化的关口编辑器,它有一个强大的视觉化场景构建界面;
2、它支持Starling Framework等渲染引擎;
3、它支持Box2D、Nape等物理引擎:翻滚箱子,滑轮,车,以及其他任何你能想到的东西,如果没有网格的限制的话;
4、强健的文档,包含ASDoc API,教学视频,和友好的开发手册;
5、标准的API意味着开发者和设计人员可以将精力花在调整有趣的东西上,同时缩短了调试时间。
核心构成
(http://www.chenlinsheng.com/?p=406)
如何使用Crtues Engine
接下来我们通过创建一个简单的demo来简单了解一下Crtues Engine的用法吧(此示例用的图片来自官网例子)
(http://www.chenlinsheng.com/?p=406)
1.使用Crtues Engine需要继承CitrusEngine类,如果想使用Starling,你必须继承StarlingCitrusEngine类。同时你需要调用setUpStarling函数来创建Starling环境,该函数有三个参数debugMode(调试模式),viewport 抗锯齿(默认为1)与anti-aliasing视图大小(默认是舞台大小)。
public class CitrusTest extends StarlingCitrusEngine
{
public function CitrusTest()
{
setUpStarling();//创建 Starling 视图
}
}
2.创建游戏状态
当我们的主类设置完成后,我们还需要设置游戏状态state。同一时间只能运行一个state。在游戏中可以设置每一个关卡都是一个state,也可以把所有关卡设置同一个state。
这里,首先我们新建一个类来继承StarlingState并将其设置成游戏的state
public class GameState extends StarlingState
{
public function GameState()
{
super();
}
public function CitrusTest()
{
setUpStarling();//创建 Starling 视图
state=new GameState();
}
3.接下来可以在GameState中重写initialize()方法来给游戏添加box2d环境(box2d开源物理引擎,我们热心的拉登大叔给我们写了不少优秀的教程,不了解的可以去他的网站看看:http://www.ladeng6666.com/blog/)和英雄,站台等元素。
override public function initialize():void{
super.initialize();
//创建一个box2D世界,需要第一个创建
var physics:Box2D=new Box2D(“box2d”);
// physics.visible=true;//如果设置为true,不同的显示元素会以不同的颜色块显示,颜色 块其实也反映了该元素/角色的发生碰撞的位置,范围
add(physics);
接下来添加hero、enemy、coin、Platform的等游戏元素,这些元素一般都具有两个参数,第一个是name,第二个为可选参数,Object类型,可以进行坐标等参数设置,如
//Platform新建一个站台作为地板,注意坐标x为512而非0,因为box2d是用显示对象的中心点作为注册点
var floor:Platform=new Platform(“floor”,{x:512,y:748,width:1024,height:40});
add(floor);
//MovingPlatform移动站台,speed设置速度,
var mp1:MovingPlatform=new MovingPlatform(“moviePl”,
{x:400,y:550,width:200,height:40,startX:400,startY:550,endX:500,endY:151});
// mp1.waitForPassenger=true;//waitForPassenger设置是否在有乘客时才移动
add(mp1);
//创建一个游戏角色,该角色可以用左右方向键行走,空格跳跃,默认可以向超级玛丽一样压死敌人
var hero:Hero=new Hero(“hero”,{x:50,y:650,width:80,height:48});
hero.view=new heroView();
add(hero);
//leftBound,rightBound设置活动范围
var enemy:Enemy=new Enemy(“enemy”,
{x:900,y:700,width:25,height:30,leftBound:10,rightBound:1000});
add(enemy);
//新建一个金币
var goal:Coin=new Coin(“ring”,{x:967,y:80,width:64,height:64});
//onBeginContact第一次被接触时候分派事件
goal.onBeginContact.add(function(c:b2Contact):void{
trace(“win”);
});
add(goal);
4.设置显示元素的view,可以理解为皮肤吧。view可以是一个类或者显示对象,图片等,在starling中也可以用Quad对其进行简单的填充
p1.view=new Quad(300,40,0×000000);
[Embed(source="assest/hero.png",mimeType="image/png")]
private var heroView:Class;
hero.view=new heroView();
这次大概就到这里吧,下次我们探讨一下摄像头和flash动画的使用吧。
=》完整源码下载
来源:oschina
链接:https://my.oschina.net/u/1020146/blog/127277