我最近是用3.0写了一个跑酷类游戏,我给主角设置了圆形的刚体代码如下:
auto body_player = PhysicsBody::createCircle(player->getContentSize().width / 4);
body_player->setContactTestBitmask(0x01);
body_player->setRotationEnable(false); //设置是否旋转
Sprite player->setPhysicsBody(body_player);
//从刚体中获得shape,并修改材质反弹力为0
Vector<PhysicsShape> physicShape = body_player->getShapes();
for(int i=0; i<physicShape.size();i++){
physicShape.at(i)->setDensity(0); //密度
physicShape.at(i)->setRestitution(0); //反弹力
physicShape.at(i)->setFriction(1000);
}
并在屏幕底面设置边线
auto body = PhysicsBody::createEdgeSegment(Point(x,0),Point(x1,0),PHYSICSBODY_MATERIAL_DEFAULT, 3);
auto edgeNode = Node::create();
edgeNode->setPosition(Point(0,y));
edgeNode->setAnchorPoint(Point::ANCHOR_MIDDLE);
body->setContactTestBitmask(1);
edgeNode->setPhysicsBody(body);
this->addChild(edgeNode);
我使用动画的方式,使player向上跳动,MoveBy::create(0.6,Point(0, 260));但是落地面边线做碰撞时,有时会莫名其妙的别反弹回来。因为之前我设置过了反弹力为0,现在偶尔会被反弹回来,知不道愿意,请大侠来帮忙,非常感谢了

还有个更扯的问题,官方demo在6.1ios模拟器下运行,刚体一直是在地面跳动