永发信息网

BOX2D中刚体的旋转会影响它的夹具中的形状中的顶点吗

答案:1  悬赏:50  手机版
解决时间 2021-01-22 22:45
BOX2D中刚体的旋转会影响它的夹具中的形状中的顶点吗
最佳答案
[1]刚体特点
(1)只能是凸多边形
(2)分为静态和动态(密度为0即为静态刚体)
(3)动态刚体可以进入休眠,及在有重力的世界里可以停到空中。
当 Box2D 确定一个物体(或一组物体)已经停止移动时,物体就会进入休眠状态,消耗很小的 CPU
开销。如果一个醒着的物体接触到了一个休眠中的物体,那么休眠中的物体就会醒来。当物体上的关节或触点被摧毁的时候,它们同样会醒来。你也可以手动地唤醒物体。
通过物体定义,你可以指定一个物体是否可以休眠,或者创建一个休眠的物体。bodyDef.allowSleep = true;
bodyDef.isSleeping = false;
[2]创建刚体
1,创建矩形和圆形
int HYC_Modle::CreatBody(int x,int y,float ang,float w_t,float
h_t,b2ShapeType style,
int id_t,NAME_STYPE name,float32 density,bool isSensor,int
t_frame)
{
b2BodyDef BodyDef;
b2PolygonDef p_shapeDef;
b2CircleDef c_shapeDef;
BodyDef.position.Set(1.0f*x/HYC_WORLD_SCALE,1.0f*y/HYC_WORLD_SCALE);//设置刚体初位置
BodyDef.angle=ang*PI/180; //设置刚体初角度
body=SpiderWorld->CreateBody(&BodyDef);
body->SetUserData((void
*)&user_data);
body->WakeUp();
switch(style)
{
case e_circleShape:
c_shapeDef.density=density;
c_shapeDef.radius=1.0f*h_t/2.0/HYC_WORLD_SCALE;
c_shapeDef.friction=0.0f;//摩擦力//
c_shapeDef.restitution=0.0f;
c_shapeDef.isSensor=isSensor;//传感器true只监听不碰撞
body->CreateShape(&c_shapeDef);
body->SetMassFromShapes();//利用形状计算其自身的质量//
shape=body->GetShapeList();

break;
case e_polygonShape:
p_shapeDef.density=density;
p_shapeDef.friction=0.0f;//摩擦力//
p_shapeDef.restitution=0.0f;
p_shapeDef.isSensor=isSensor;
p_shapeDef.SetAsBox(
1.0f*w_t/2.0/HYC_WORLD_SCALE,1.0f*(h_t/2.0)/HYC_WORLD_SCALE);//长方形
body->CreateShape(&p_shapeDef);
body->SetMassFromShapes();//利用形状计算其自身的质量//
shape=body->GetShapeList();

break;
}
user_data.id=id_t;
user_data.stype=name;
user_data.shapetype=style;

}
2,创建三角形(通过设定各顶点位置,最多有八个顶点)
p_shapeDef.density=1.0f;
p_shapeDef.type=e_shapeTypeCount;
p_shapeDef.vertexCount=3;
p_shapeDef.type=e_shapeTypeCount;
p_shapeDef.vertices[0].x=0.0f;//逆时针或顺时针都可以p_shapeDef.vertices[0].y=0.0f;
p_shapeDef.vertices[1].x=0.2f;
p_shapeDef.vertices[1].y=0.2f;
p_shapeDef.vertices[2].x=-0.2f;
p_shapeDef.vertices[2].y=0.2f;
body->CreateShape(&p_shapeDef);
body->SetMassFromShapes();
3,创建一个刚体由多个形状组成
下列为三个矩形形状固化在一个刚体上
void HYC_BOX2D_Modle::CreateBox()//创建个空盒子做边界
{
b2BodyDef BodyDef;
b2Vec2 center;
b2PolygonDef p_shapeDef;
BodyDef.position.Set(1000/2.0f/HYC_WORLD_SCALE,700/2.0/HYC_WORLD_SCALE);
BodyDef.angle=0;
body=TestWorld->CreateBody(&BodyDef);//在这个世界创建刚体
center.x=1024.0f/HYC_WORLD_SCALE;
center.y=10.0f/HYC_WORLD_SCALE;
p_shapeDef.SetAsBox(1024.0f/HYC_WORLD_SCALE,10.0f/HYC_WORLD_SCALE,center,0);
body->CreateShape(&p_shapeDef);
center.x=10.0f/HYC_WORLD_SCALE;
center.y=768.0f/2.0/HYC_WORLD_SCALE;
p_shapeDef.SetAsBox(10.0f/HYC_WORLD_SCALE,768.0f/HYC_WORLD_SCALE,center,0);
body->CreateShape(&p_shapeDef);
center.x=1000.0f/HYC_WORLD_SCALE;
center.y=768.0f/2.0/HYC_WORLD_SCALE;
p_shapeDef.SetAsBox(10.0f/HYC_WORLD_SCALE,768.0f/HYC_WORLD_SCALE,center,0);
body->CreateShape(&p_shapeDef);
}
如果要创建动态刚体必须添加p_shapeDef.density=1.0f;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
丽之轩紧致护肤养生会所地址在什么地方,想过
河东工商分局地址在哪,我要去那里办事,
单选题Inthosedays,howI______achanceto
打开流星蝴蝶剑时出现该内存不能为READ,有什
金沙县工商行政管理局安底分局地址有知道的么
青之蓝美容美体养生馆地址有知道的么?有点事
在○里填上”>:”,”<”或者”=”.4.7×
求在2001年出生的韩国所有女艺人?
黔西县工商行政管理局素朴分局地址在什么地方
神采飞扬美容院地址在哪,我要去那里办事,
林泉工商所地址在什么地方,想过去办事,
单选题Astronomersestimate________called
康有为为什么反对民主革命?
中艾堂艾灸养生会所地址在什么地方,想过去办
上海大专院校排名
推荐资讯
求有诗意古典气息的百度ID名 ,
金树叶双语艺术幼儿园地址好找么,我有些事要
The new airport has been in for two years
农业银行卡莫名其妙的少了三十元为什么?
He didn’t tell me the truth I met him in
如图1所示,弹簧秤下悬挂着一重物(不与溶液
童画故室地址在哪,我要去那里办事,
解答题阅读下列材料:【材料一】(康熙)圣学
He at the meeting, but his heart attack p
ForeverBar地址在哪,我要去那里办事
启明灯饰怎么去啊,我要去那办事
亿洁洗衣地址在哪,我要去那里办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?