1.关于Hero,Enemy对象碰撞的问题
Citrus中的Hero,Enemy对象默认是相互碰撞的,不只是Hero和Enemy, Hero和Hero之间,Enemy和Enemy之间也会。这是因为这些对象实现了物理学,都定义成为了刚体。
在实际游戏中,角色和对人往往都是可以重合的,没有必要检测碰撞。
Citrus中暂时只能通过更改Hero,Enemy源代码来去除碰撞检测。通过更改他们的defineFixture方法可以达到目的。
_fixtureDef.filter.maskBits = PhysicsCollisionCategories.GetAllExcept("Items");
比如上面的代码是Enemy类defineFixture中的,表示出了Items对象都会发生碰撞,这也包括了enemy,hero,可以改成
_fixtureDef.filter.maskBits = PhysicsCollisionCategories.GetAllExcept("BadGuys");
这样就不会和自己同类的对象发生碰撞了,也就是说可以重叠显示了。
2.关于tiled map的一些问题
Citrus中能够解析tmx文件(tiled 生成)并自己创建platform对象,也就说只要你在场景中创建了物理世界,你创建的hero,enemy都会顺利地落在这些platform上面。
但是这有个问题,就说当platform位置比较低的时候,hero站在platform下面按空格跳跃会直接撞到上面的platform。解决这个需要在tmx文件的object层给类型为citrus.objects.platformer.box2d.Platform的对象设置属性oneway=true,这样hero只有从上面落下的时候和platform碰撞。
上图创建的地图中每个platform两旁创建了两个竖直的Object,这里我给他定义type为citrus.objects.platformer.box2d.Sensor,目的是防止怪物从这些较长的platform上面掉下来。
当然光这样做citrus是不会自己给你完成这样的功能的,还需要自己创建一个类,继承Enemy,重写他的handleBeginContact方法
public class Monster extends MyEnemy
{
public function Monster(name:String, params:Object = null)
{
super(name, params);
}
override public function handleBeginContact(contact:b2Contact):void {
var obj:IBox2DPhysicsObject = Box2DUtils.CollisionGetOther(this, contact);
if (obj is Sensor) {
turnAround();
}
super.handleBeginContact(contact);
}
override public function handleEndContact(contact:b2Contact):void {
super.handleEndContact(contact);
}
}
var obj:IBox2DPhysicsObject = Box2DUtils.CollisionGetOther(this, contact);
获取碰撞对象
if (obj is Sensor) {
turnAround();
}
如果对象是我们创建在platform两头的Sensor,那怪物就要掉头了,也就掉不下去了。
大猩猩刚掉头^o^
分享到:
相关推荐
《CitrusEngine系列教程一:认识CitrusEngine》示例源码
Citrus引擎提供了一个快速原型游戏的架构,特别是ACT横版过关类的。内置实现了platform 包,支持角色 (Hero) 、道具盒子(Sensor) 、平台 (platform) 并扩展了 MovingFLatform是自运动的平台。 目前的版本同时封装了...
pomelo-citrus是一个使用Ruby编程语言开发的开源游戏服务器框架,其软件架构和设计均来源于pomelo并已实现了pomelo的大部分功能。 标签:pomelo
Citrus Docker容器 该项目将构建用于运行集成测试的映像。 建立影像 该项目包含用于Citrus Docker映像的Dockerfiles 。 您可以使用Maven调用在本地构建图像 mvn docker:build 之后,您应该在Docker主机上有一组名...
潮汕IT男网出的《CitrusEngine系列教程四:Citrus的2D动画和摄像头 》示例源码,教程地址:http://www.chenlinsheng.com/?p=463
CITRUS7_eric
java运行依赖jar包
非常可以的citrus-2.4-cp.tar.gz,请指正
license-maven-plugin.zip,这是maven.puresol technologies的maven许可证插件的一个简单的许可证检查器插件
Citrus样本部分包含许多小项目,每个小项目代表一个单独的被测系统和一些Citrus测试用例。 每个样本文件夹展示了如何使用Citrus的一个特殊方面。 大多数示例使用简单的待办事项列表应用程序作为被测系统。 请找到...
Citrus :: 解析 Ruby 的表达式 Citrus 是一个紧凑而强大的解析库,它结合了该语言的优雅和表现力以及的简单性和强大功能。 安装 通过 : $ gem install citrus 从本地副本: $ git clone git://github....
Citrus 是一个用 Java 编写的测试框架,能够为企业 SOA 应用程序创建完全自动化的端到端用例测试。 Citrus 模拟周围的接口合作伙伴,支持大量不同的传输和协议,如 Http、JMS、TCP/IP、FTP、SOAP、XML 和 JSON。 请...
Citrus Development Limepad 是一款德国开源代码/文本编辑器,包含语法高亮、实时文本转 HTML、40 种编程语言、HTML 和批量调试。 此外,代码片段、浏览器、ExplorerTree 和各种
有关更多信息,请参见关于的部分。 yarn build 构建生产到应用程序build文件夹。 它在生产模式下正确捆绑了React,并优化了构建以获得最佳性能。 生成被最小化,并且文件名包括哈希值。 您的应用已准备好进行部署...
多重PCR同步检测柑橘黄龙病和溃疡病,王中康,周彬彬,柑橘黄龙病(huanglongbing, HLB)和溃疡病(citrus bacterial canker disease, CBCD)是两种毁灭性病害。在东南亚地区的很多柑橘产区都存在HLB和CBCD同时感
Android citrus SlidMenu配合ViewPager实现常用框架只有滑动切换menu以及左右滑动 home切换viewpager事件冲突解决非常好,是常用的android架构,适合用来搭建框架。 Android citrus SlidMenu配合ViewPager实现常用...
Citrus是一个库和演示应用程序套件,用于将带有单位的数字转换为带有不同单位的数字。
安装要求Node.js> = 14.x NPM(特别是uglify-js包)安装和编译转到发布标签并下载我们编译器的最新版本将编译器与Citrus文件一起放入目录打开终端/ cmd / powershell实例,并在以下位置导航到包含Citrus文件的文件夹...
program on he audio recognisation
GT_Neo第三方内核Citrus-LimeShock-V1.6.ZiP