文档章节

CitrusEngine系列教程一:认识CitrusEngine

clschen
 clschen
发布于 2013/05/03 17:36
字数 1308
阅读 314
收藏 4

教程作者: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动画的使用吧。

=》完整源码下载

© 著作权归作者所有

clschen
粉丝 4
博文 21
码字总数 10662
作品 1
广州
程序员
私信 提问
CitrusEngine系列教程五:使用PhysicsEditor创建box2d刚体

作者:cls分享站 目前已有教程: CitrusEngine系列教程一:认识CitrusEngine CitrusEngine系列教程二:结合starling和Box2D开发游戏 CitrusEngine系列教程三:使用flash cs 设计关卡 Citrus...

clschen
2013/05/15
0
0
CitrusEngine系列教程三:使用flash cs 设计关卡

教程出自 cls分享站 CitrusEngine系列教程一:认识CitrusEngine CitrusEngine系列教程二:结合starling和Box2D开发游戏 CitrusEngine系列教程三:使用flash cs 设计关卡 CitrusEngine系列教程...

clschen
2013/05/07
0
0
CitrusEngine系列教程二:结合starling和Box2D开发游戏

教程出自 cls分享站 CitrusEngine系列教程一:认识CitrusEngine CitrusEngine系列教程二:结合starling和Box2D开发游戏 CitrusEngine系列教程三:使用flash cs 设计关卡 CitrusEngine系列教程...

clschen
2013/05/05
0
0
CitrusEngine系列教程七:修改hero的默认动画(修改按键和增减动作)

作者:cls分享站 最近比较忙活,工作和家里都有些烦心的事情要处理,教程已经许久没更新了,感觉有点过不去啊。恰好今天有人问我如何修改hero默认按键和添加动画的问题,于是决定写一篇教程介...

clschen
2013/06/14
0
0
“我爱智能”原创性博客索引

不知不觉,博客也写出了一点小体系,新的阶段已经开始,未来希望再接再厉继续补充这一体系,在成长中写博客,在博客中成长,在此先做一个小的梳理,谢谢大家的支持。 一)关于深度学习系列 ...

on2way
2015/08/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一文让你轻松了解JAVA开发中的四种加密方法

文章目录 一、工具类 md5加密工具类 base64加密工具类 Bcrypt工具类 二、加密测试 MD5加密测试 base64加密测试 SHA加密测试 BCrypt加密测试 一、工具类 1. md5加密工具类 package 加密Teste...

爱编程的浪子
29分钟前
5
0
注解Annotation实现原理与自定义注解例子

什么是注解? 对于很多初次接触的开发者来说应该都有这个疑问?Annontation是Java5开始引入的新特征,中文名称叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metad...

Java面经
30分钟前
6
0
并发模式与 RPS 模式之争,性能压测领域的星球大战

本文是《如何做好性能压测》系列专题分享的第四期,该专题将从性能压测的设计、实现、执行、监控、问题定位和分析、应用场景等多个纬度对性能压测的全过程进行拆解,以帮助大家构建完整的性能...

阿里云云栖社区
39分钟前
2
0
Knative Service 之流量灰度和版本管理

本篇主要介绍 Knative Serving 的流量灰度,通过一个 rest-api 的例子演示如何创建不同的 Revision、如何在不同的 Revision 之间按照流量比例灰度。 部署 rest-api v1 代码 测试之前我们需要...

阿里云官方博客
40分钟前
4
0
金融壹账通与菲律宾联合银行合作 共推科技平台赋能中小企业融资

中小微企业融资是世界性的难题,在破解这一难题上,中国平安集团一直在用科技手段贡献来自中国的解决方案,而区块链技术的引入更为这一问题的解决带来了新的方向,同时平安对外赋能的脚步也借...

IFTNews
42分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部