CitrusEngine系列教程二:结合starling和Box2D开发游戏
来源:互联网 发布:银行家算法例题ppt 编辑:程序博客网 时间:2024/05/21 17:59
教程出自 cls分享站
首先脑补一下相关知识吧
Starling是一个ActionScript类库,它模仿了传统的Flash显示列表。然而,和传统的显示对象不同,Starling对象完全存在于Stage3D环境。这意味着,所有的显示对象都直接由GPU渲染,这会带来非常明显的性能提升。=》Starling中文站Box2DFlashAS3是Box2D物理引擎的ActionScript 3.0移植版本。它具有功能强大,效率较高等优点,应用Box2DFlashAS3可以使我们的网站模拟真实世界的物理效果,从而使我们的站点具有非常强的真实感。而我们热心的拉登大叔给我们写过不少优质教程。
这个教程参考官方例子,=》官方例子演示
最后效果:
见附件
开始之前,可以下载 CEV3-1-6-Starling-Feathers-Box2D.swc ,也可以像我一样单独去下载box2d,starling等源码来自己配置折腾…当然,也可以直接下载本文末尾提供的flex项目源码
1.创建主类
在StriusEngine中使用Starling,你必须继承StarlingCitrusEngine类,这个类继承于CitrusEngine(在教程一的时候我们使用的就是这个),主要提供了Starling的简单实现。
为了成功实现Starling,我们需要在构造函数中调用setUpStarling函数,该函数有三个参数debugMode(调试模式),viewport 抗锯齿(默认为1)与anti-aliasing视图大小(默认是舞台大小)。同时需要是运行于Flash player11。
2.创建游戏state
直译为状态,一个state可以是一个关卡,也可以将很多关卡放在一个state。state包含了游戏的逻辑,主类用来管理目录。同样这个我们需要用StarlingState代替之前的State。不过同样是通过重写initialize()方法来添加游戏元素,同样别忘了
super.initialize().
主类
state = new StarlingDemoGameState();
3.添加box2d
注意!box2d需要第一个被添加!否则在新建其他基于box2d的游戏元素(hero等)时候会报错,另外这个物理引擎的注册点事基于对象的中心点,所以坐标以中心点为准
接下来我们新建一些预设好的游戏元素,(新建元素的时候一般有两个参数,第一个参数是name(必选),CitrusEngine中是使用那么访问元素的,第二个Object类型,可选,可以给该元素的一些属性设置默认值
简单介绍一下上面用到的元素吧(英文好的朋友,可以直接查看官网api,顺便求路过的大神帮忙翻译一下,各种求啊~)
Platform:平台,可以用来做地板,站台,障碍物等,oneWay属性设置为ture的话,英雄可以从Platform下面往上跳,差不多可以说是穿墙术吧,哈
Coin:钱币,默认被英雄触碰后会消失,同时抛出一个事件,下问添加互动的时候会演示如何监听这个事件
hero:英雄,游戏主角,可以想超级玛丽那样杀死敌人(压死敌人),当他接触敌人coin时候,coin会消失,hurtVelocityX, hurtVelocityY可以设置英雄受伤时候回跳的距离
enemy:敌人,leftBound, rightBound设置敌人的活动范围,敌人会依据设置来回走动直到遇到障碍物
4.添加Starling 素材
添加素材的方法很多,这个教程我用了三种,直接给地址:
var coin:Coin = new Coin("coin", {x:360, y:200, view:"levels/SoundPatchDemo/jewel.png"});
使用Quad类,Quad根据指定的尺寸和颜色创建一个四边形。 最后一个参数决定是否在渲染的时候预乘透明度值,从而影响混合输出的颜色值,大多数情况下可以使用默认值。
add(new Platform("cloud",{x:450,y:580,width:170,height:30,oneWay:true,
view:new Quad(170,30,0x000FF0)}))
通过Embed嵌入预先画好的美术图与xml和动画片系列组合完成素材的导入;
这里也脑补一下一些Starling 的纹理知识吧,=》中文api
Texture:纹理是用来储存展示图像的信息。它不能直接被添加到显示列表;
相应的它必须映射到一个显示对象上。 在Staring中那个显示对象就是“Image”类。
Texture.fromBitmap():fromBitmap通过一个bitmap来创建纹理对象。 注意:如果Starling需要处理一个丢失的设备
上下文,那么不允许你释放纹理数据。
TextureAtlas: TextureAtlas纹理集是一个将许多小的纹理整合到一张大图中。这个类是用来从一个纹理集中读取 纹理
TextureAtlas(texture:Texture, atlasXml:XML = null)通过指定纹理和用于描述范围的XML来创建一个纹理集
5.添加声音交互(主类添加声音,state中用_ce.sound 调用)
a.在主类添加声音
sound.addSound("Collect", "sounds/collect.mp3");
b.给coin添加触碰监听
c.coinTouched添加播放声音的方法,
_ce.sound.playSound("Collect",1,0);
这样就可以了,当coin被触碰时,就会播放collect.mp3了
6.使用控制台
运行游戏的时候,按“Tab”键,控制台会在顶部出现,基本上是一个输入框,这时我们可以通过name访问游戏中的元素并进行设置,如:
呼,终于写完了。下期见
=》原文及源码网盘下载
- CitrusEngine系列教程二:结合starling和Box2D开发游戏
- CitrusEngine系列教程五:使用PhysicsEditor创建box2d刚体
- CitrusEngine系列教程一:认识CitrusEngine
- 【COCOS2DX-BOX2D游戏开发之二】 Box2d教程链接
- AndEngine游戏开发系列教程(二)
- CitrusEngine系列教程四:Citrus的2D动画和摄像头
- CitrusEngine系列教程七:修改hero的默认动画(修改按键和增减动作)
- Cocos2d-x 结合Box2D开发Android游戏配置方法
- Cocos2d-x 结合Box2D开发Android游戏配置方法
- Cocos2d-x 结合Box2D开发Android游戏配置方法
- CitrusEngine系列教程三:使用flash cs 设计关卡
- CitrusEngine系列教程六:使用Tiled Map Editor创建地图
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(11)-使用box2d和着色器的最佳实践
- [ IOS-Cocos2d-x (Box2d)游戏开发之三] -Cocos2d-x 结合Box2D开发Android游戏配置方法
- Starling开发微信打灰机(二)
- [教程] Windows8 游戏开发教程-二、关于资源和工具
- [ IOS-Cocos2d-x (Box2d)游戏开发之二] -Box2D如何开启debugDraw
- Cocos2d游戏开发系列教程
- 剑指offer面试题28字符串的所有排列permutation
- UVA 729 - The Hamming Distance Problem
- Ubuntu 12.10 显示隐藏文件
- Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法)
- Android Tasker应用之自动查询并显示话费流量套餐信息
- CitrusEngine系列教程二:结合starling和Box2D开发游戏
- Android用PopupWindow实现新浪微博的分组信息
- 新版新浪微博api使用问题及相关解决办法
- Linux 文件权限 变成制度 readonly 解决方法: mount -o remount -rw /
- 同样的css在html中与jsp中不一样【解决】
- java中的数组对象
- AssignProcessToJobObject 拒绝访问
- 由一个问题引发的网络知识解惑
- 画表格