当下软件园-绿色软件,免费软件下载,电脑软件下载,绿色软件下载网站
TAG标签| 网站地图| 设为首页| 加入收藏
当前位置:当下软件园 > 软件下载 > 编程开发 > 编程软件 >

box2d 形状生成工具(PhysicsEditor)

类型:编程软件

语言:英文

更新:2024-09-15 17:00

大小:14.9M

版本:1.0.9 免费版

平台:WinXP

标签:物理引擎box2d

  • 软件介绍
  • 软件截图
  • 相关下载

PhysicsEditor 是一款非常不错的box2d 形状生成工具,通过图形界面,点点鼠标,生成形状的plist文件,然后用他的api生成fixtures加到需要的body中去。配合多款2维物理引擎的编辑器,box2d等, 生成地形及自概念刚体等。

特征:

简单易用的图形用户界面

自动跟踪的形状

凹多边形的自动处置

在你的项目管理所有你需要你的精灵

非中文破解版,不注册可以用,但对多边形边数有限制。

windows+VS用PhysicsEditor 课程:

1. 下载安装之后,在类似目录:

D:\Program Files\PhysicsEditor\Examples\Cocosplay2d-X\Demo

下有用例子。不过那是个xcode project,假如像我一样用windows+visual studio,那样你需要新建一个项目,把类似目录:

D:\Program Files\PhysicsEditor\Examples\Cocosplay2d-X\Demo\Demo\Classes

下的 HelloWorldScene.cpp + HelloWorldScene.h 两个文件拷出来,替换新建的cocosplay2d-x 项目【注:不适用于cocosplay2dx 2.0 以下的版本】

2. 在路径:

D:\Program Files\PhysicsEditor\Examples\Cocosplay2d-X\Demo\Demo\generic-box2d-plist 下面,有另外两个需要的文件:

GB2ShapeCache-x.cpp +GB2ShapeCache-x.h,把他们拷贝到新建的工程的Classes目录下。 假如期望只保留这一份.h 和 .cpp 文件,那样把 对应路径加到项目的附加包括目录,并且把 cpp 文件的引用加到工程即可。

生成运行程序,点击屏幕,不断地在屏幕地区里增加水果。像如此:

==========================================================================================

那样,代码里如何用这个 plist 文件呢?

1. 架构函数HelloWorld 里面:

[cpp]view plaincopy

//loadphysicsshapes

GB2ShapeCache::sharedGB2ShapeCache-addShapesWithFile;

(仿佛大伙都非常喜欢单例模式。。。)

2. 成员函数void HelloWorld::addNewSpriteWithCoords 里面:

[cpp]view plaincopy

voidHelloWorld::addNewSpriteWithCoords

{

stringname=names[rand%7];

CCSprite*sprite=CCSprite::spriteWithFile.c_str);

sprite-setPosition;

addChild;

b2BodyDefbodyDef;

bodyDef.type=b2_dynamicBody;

bodyDef.position.Set;

bodyDef.userData=sprite;

b2Body*body=world-CreateBody;

//addthefixturedefinitionstothebody

GB2ShapeCache*sc=GB2ShapeCache::sharedGB2ShapeCache;

sc-addFixturesToBody);

sprite-setAnchorPoint));

}

先创建精灵,然后用 b2BodyDef 创建一个 body,这个时候body其实还没形状。先前的时候大家给body赋予一个fixture是如此:

[cpp]view plaincopy

b2FixtureDefcarShapeDef;

carShapeDef.shape=carShape;

carShapeDef.density=10.f;

carShapeDef.restitution=0.9f;

//carShapeDef.isSensor=true;

_carBody-CreateFixture;

先创建一个 b2FixtureDef, 给他的shape域一个形状,然后 xxBody-CreateFixture...

而这次,大家却用了 GB2ShapeCache:

[cpp]view plaincopy

GB2ShapeCache*sc=GB2ShapeCache::sharedGB2ShapeCache;

sc-addFixturesToBody);

注意到示例代码里面还有个 setAnchorPoint 的行为,事实上,box2d 里面是没 anchorPoint 的定义的,这个 sc-anchorPointForShape) 是 PhysicsEditor 附加的一个标记,由于假如自己用physicsEditor,默认状况下,生成的坐标值是以图片左下角作为(0,0)计算的,像如此:

这就等于 anchorPoint跑到了 (0,0),假如sprite没相应的重设anchorPoint的话,就会产生碰撞测试跟看到的画面不同的状况,或者debugDraw也可以直接看到 shape 跟 sprite没重合:


当然,也可以在physicsEditor 里面就把 “anchorPoint” 拖到中央,如此就不必一直记得设定 sprite的anchorPoint 了。。。

TAG标签:物理引擎(1)box2d(1)

转载请说明来源于当下软件园(https://www.gpsdan.com)

本文地址:https://www.gpsdan.com/soft/327.html

郑重声明:文章来源于网络作为参考,本站仅用于分享不存储任何下载资源,如果网站中图片和文字侵犯了您的版权,请联系我们处理!邮箱3450399331@qq.com