Cocos2d-x中createEdgeBox()的各项参数的含义

本文介绍了Cocos2d-x中PhysicsBody::createEdgeBox()函数的使用,详细解析了参数包括Size、密度、摩擦系数、弹性系数以及边框宽度和本地坐标偏移量的含义和作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PhysicsBody::createEdgeBox()的定义如下:

PhysicsBody::createEdgeBox(const Size& size, const PhysicsMaterial& material, float border/* = 1*/, const Vec2& offset)

第一个参数是Size类型,可以传入如visibleSize等参数。

第二个参数是一个PhysicsMaterial类型的参数,这个参数有三个成员变量,float dentity, float restitution, float friction.分别代表了密度,弹性系数和摩擦系数。

密度即为物理学上的密度,取值为0或正数。

摩擦系数在0.0-1.0之间,0.0表示无摩擦力,1.0表示强摩擦力。

弹性系数在0.0-1.0之间,0.0表示物体不会弹起,1.0表示物体被完全弹起,即弹性碰撞。

这个参数经常会用一个常量PHYSICSBODY_MATERIAL_DEFAULT替代,这个常量定义如下:

const PhysicsMaterial PHYSICSBODY_MATERIAL_DEFAULT(0.1f, 0.5f, 0.5f);
即把密度设为0.1,弹性系数设为0.5,摩擦系数设为0.5.

第三个参数是边框的宽度。

第四个参数API中的解释是A Vec2 object, it is the offset from the body’s center of gravity in body local coordinates.

在创建边框时用到了该参数:

cpVect vec[4] = {};
vec[0] = PhysicsHelper::point2cpv(Vec2(-size.width/2+offset.x, -size.height/2+offset.y));
vec[1] = PhysicsHelper::point2cpv(Vec2(+size.width/2+offset.x, -size.height/2+offset.y));
vec[2] = PhysicsHelper::point2cpv(Vec2(+size.width/2+offset.x, +size.height/2+offset.y));
vec[3] = PhysicsHelper::point2cpv(Vec2(-size.width/2+offset.x, +size.height/2+offset.y));
可以看出,该参数的作用是,边框会整体移动该变量的数值。如当参数设置为Vec2(100,100)时,边框会整体向右向上各移动100的距离。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值