快速业务通道

Box2D中的b2DebugDraw使用示例

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-07

b2DebugDraw提供调试功能,由于Box2D中所有对象都是不可见的,要创建可见对象我们得用刚体定义中的userData属性来创建自己的图形,如果不创建自己的图形,则用b2DebugDraw类来实现物体的可见,方便调试。
具体代码:
private function showDebug():void
{
//创建一个sprite,提供渲染
var m_sprite:Sprite = new Sprite();
addChild(m_sprite);
var dbgSprite:Sprite = new Sprite();
//给m_sprite添加一个子sprite
m_sprite.addChild(dbgSprite);
var dbgDraw:b2DebugDraw = new b2DebugDraw();
//将m_sprite作为dbgDraw的渲染sprite
dbgDraw.m_sprite = m_sprite;
//设置比例为30,如果不设置则所有物体都会很小,box2D中以米为单位,1m=30像素
dbgDraw.m_drawScale = physScale;
//设置要显示的内容,每个标志代表一项
dbgDraw.m_drawFlags = b2DebugDraw.e_aabbBit |
b2DebugDraw.e_jointBit |
b2DebugDraw.e_obbBit |
b2DebugDraw.e_shapeBit;
//绘制刚体所用线条的透明度
dbgDraw.m_alpha = 1;
//填充刚体所用颜色的透明度
dbgDraw.m_fillAlpha = 0.3;
//绘制刚体所用线条的粗细
dbgDraw.m_lineThickness = 1;
//从虚拟世界开始模拟
world.SetDebugDraw(dbgDraw);
}
b2DebugDraw类中有7个标志常量:
b2DebugDraw.e_aabbBit :表示显示刚体的边界盒
b2DebugDraw.e_jointBit :表示显示刚体相连时的节点和连线
b2DebugDraw.e_obbBit :显示凸多边形的边界,不显示圆的边界
b2DebugDraw.e_pairBit:draw broad-phase pairs(不知如何翻译是好用原文)
b2DebugDraw.e_coreShapeBit:draw core (TOI) shapes
b2DebugDraw.e_shapeBit:显示刚体的形状,不管是何种形状
b2DebugDraw.e_centerOfMassBit:显示质量中心。重心?质心?
上面的代码我们可以设置绘制刚体的线条透明度,粗细,以及填充刚体颜色的透明度,但我们无法设置填充刚体所用的颜色,在Box2D中,默认有三中颜色来填充刚体,即红色,绿色,灰色。
红色---------表示已经处于休眠状态的刚体
绿色---------表示静止的刚体,没有密度质量的刚体
灰色---------表示正在移动的刚体
不过,我们可以修改b2World类中1060-1074 行的代码来修改这三种默认的颜色,b2World中的代码如下:
for (s = b.GetShapeList(); s; s = s.m_next)
{
if (b.IsStatic())
{
DrawShape(s, xf, new b2Color(0.5, 0.9, 0.5), core);
}
else if (b.IsSleeping())
{
DrawShape(s, xf, new b2Color(0.5, 0.5, 0.9), core);
}
else
{
DrawShape(s, xf, new b2Color(0.9, 0.9, 0.9), core);
}
}这里实际是修改传递给b2Color实例的值,只需修改其构造函数中的三个对应的值即可。 效果: 关键词:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号