加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

CitrusEngine系列教程一:认识CitrusEngine

发布时间:2020-12-15 04:21:38 所属栏目:百科 来源:网络整理
导读:教程出自? cls分享站 系列已有教程 CITRUSENGINE系列教程一:认识CITRUSENGINE CITRUSENGINE系列教程二:结合STARLING和BOX2D开发游戏 CITRUSENGINE系列教程三:使用FLASH CS 设计关卡 CITRUSENGINE系列教程四:CITRUS的2D动画和摄像头 CITRUSENGINE系列教程

教程出自?cls分享站

系列已有教程

CITRUSENGINE系列教程一:认识CITRUSENGINE

CITRUSENGINE系列教程二:结合STARLING和BOX2D开发游戏

CITRUSENGINE系列教程三:使用FLASH CS 设计关卡

CITRUSENGINE系列教程四:CITRUS的2D动画和摄像头

CITRUSENGINE系列教程五:使用PHYSICSEDITOR创建BOX2D刚体

CITRUSENGINE系列教程六:使用TILED MAP EDITOR创建地图

CITRUSENGINE系列教程七:修改HERO的默认动画(修改按键和增减动作)

-----------------------------------------------------------------------------------------

终于要做游戏项目了呐,之前一直做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意味着开发者和设计人员可以将精力花在调整有趣的东西上,同时缩短了调试时间。

核心构成


如何使用Crtues Engine

接下来我们通过创建一个简单的demo来简单了解一下Crtues Engine的用法吧(此示例用的图片来自官网例子)

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动画的使用吧。

=》完整源码下载

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读