CitrusEngine系列教程一:认识CitrusEngine

Stella981
• 阅读 459

教程作者:cls分享站

  1. CitrusEngine系列教程一:认识CitrusEngine

  2. CitrusEngine系列教程二:结合starling和Box2D开发游戏

  3. CitrusEngine系列教程三:使用flash cs 设计关卡

  4. CitrusEngine系列教程四:Citrus的2D动画和摄像头

  5. CitrusEngine系列教程五:使用PhysicsEditor创建box2d刚体

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

=》完整源码下载

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Stella981 Stella981
2年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Wesley13 Wesley13
2年前
Java爬虫之JSoup使用教程
title:Java爬虫之JSoup使用教程date:201812248:00:000800update:201812248:00:000800author:mecover:https://imgblog.csdnimg.cn/20181224144920712(https://www.oschin
Wesley13 Wesley13
2年前
P2P技术揭秘.P2P网络技术原理与典型系统开发
Modular.Java(2009.06)\.Craig.Walls.文字版.pdf:http://www.t00y.com/file/59501950(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.t00y.com%2Ffile%2F59501950)\More.E
Stella981 Stella981
2年前
CitrusEngine系列教程三:使用flash cs 设计关卡
教程出自cls分享站(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.chenlinsheng.com%2F)1.CitrusEngine系列教程一:认识CitrusEngine(https://www.oschina.net/action/GoToLink?url
Stella981 Stella981
2年前
CitrusEngine系列教程六:使用Tiled Map Editor创建地图
作者:cls分享站(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.chenlinsheng.com%2F)目前已有教程:1. CitrusEngine系列教程一:认识CitrusEngine(https://www.oschina.net/action/GoToL
Stella981 Stella981
2年前
CitrusEngine系列教程二:结合starling和Box2D开发游戏
教程出自cls分享站(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.chenlinsheng.com%2F)1.CitrusEngine系列教程一:认识CitrusEngine(https://www.oschina.net/action/GoToLink?url
Easter79 Easter79
2年前
Swift项目兼容Objective
!456.jpg(http://static.oschina.net/uploads/img/201509/13172704_1KcG.jpg"1433497731426906.jpg")本文是投稿文章,作者:一叶(博客(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2F00red
Stella981 Stella981
2年前
CitrusEngine系列教程五:使用PhysicsEditor创建box2d刚体
作者:cls分享站(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.chenlinsheng.com%2F)目前已有教程:1.CitrusEngine系列教程一:认识CitrusEngine(https://www.oschina.net/action/GoToLi
Stella981 Stella981
2年前
CitrusEngine系列教程四:Citrus的2D动画和摄像头
作者:cls分享站(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.chenlinsheng.com%2F)1.CitrusEngine系列教程一:认识CitrusEngine(https://www.oschina.net/action/GoToLink?urlht