新手求救!关于cocos2d-x 3.3物理引擎的问题

悲剧了,3.2在电脑上测试没问题,但是拿到手机上还是不行……有没有大神能够解决啊。

——————————————————————————————————————————————————————————

才开始学习cocos不久,做一个关于物理引擎的练习。

就是一个小球在屏幕中移动,遇到四周边界就反弹。

基本就是根据论坛里的帖子:http://www.cocoachina.com/bbs/read.php?tid=221969来写的。

可是运行的时候刚开始还好,过一会(可能几秒钟,也可能半分钟)却会出现小球速度变慢,同时小球角度发生变化的情况。

在论坛上搜索查了半天也没有查出个所以然,有人说是帧率低的原因,可是我更改到每秒180帧了以后都还是一样。

谁知道是什么原因啊?该怎么解决?

代码如下:

Scene* HelloWorld::createScene()
{
    // 'scene' is an autorelease object
    //创建有物理空间的场景 
    auto scene = Scene::createWithPhysics();
    //设置Debug模式,你会看到物体的表面被线条包围,主要为了在调试中更容易地观察 
    scene->getPhysicsWorld()->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL);
    auto layer = HelloWorld::create();
    //把空间保持我们创建的层中,就是上面所说m_world的作用,方便后面设置空间的参数 
    layer->setPhyWorld(scene->getPhysicsWorld());
    scene->addChild(layer);
    return scene;
}
bool HelloWorld::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !Layer::init() )
    {
        return false;
    }
    
        Size visibleSize = Director::getInstance()->getVisibleSize();
        Vec2 origin = Director::getInstance()->getVisibleOrigin();
        auto ballOne = Sprite::create();
    ballOne->setContentSize(Size(50, 50));
    ballOne->setPosition(visibleSize.width / 2, visibleSize.height / 2);
    //创建物体,并且物体的形状为圆形,第一参数为半径,第二个参数为物体材质 
    //第三个参数为边的厚度,就是在Debug模式下看到的物体外面线条的厚度,默认为0 
    PhysicsBody* ballBodyOne = PhysicsBody::createCircle(ballOne->getContentSize().width / 2, 
        PHYSICSBODY_MATERIAL_DEFAULT);
    
    //设置物体的恢复力 
    ballBodyOne->getShape(0)->setRestitution(1.0f);
    //设置物体的摩擦力 
    ballBodyOne->getShape(0)->setFriction(0.0f);
    //设置物体密度 
    ballBodyOne->getShape(0)->setDensity(1.0f);
     
    //设置物体是否受重力系数影响 
    ballBodyOne->setGravityEnable(false);

    //设置物体的冲力 
    Vect force = Vect(500000.0f, 500000.0f);
    ballBodyOne->applyImpulse(force);
    //把物体添加到精灵中 
    ballOne->setPhysicsBody(ballBodyOne);
    //设置标志 
    ballOne->setTag(1);
    this->addChild(ballOne);


    Sprite* edgeSpace = Sprite::create();
    PhysicsBody* boundBody = PhysicsBody::createEdgeBox(visibleSize, PHYSICSBODY_MATERIAL_DEFAULT, 3);
    boundBody->getShape(0)->setFriction(0.0f);
    boundBody->getShape(0)->setRestitution(1.0f);

    edgeSpace->setPhysicsBody(boundBody);
    edgeSpace->setPosition(Point(visibleSize.width / 2, visibleSize.height / 2));
    this->addChild(edgeSpace);
    edgeSpace->setTag(0);

        return true;
}


```

我跑了下,完全没问题啊:7:

:8::8::8::8:

那是什么情况喂……难道和系统有关?我是win8.1 64位系统,版主是什么系统?

Mac环境的,和系统没关。

:6::6::6::6:

我发布到手机上也是一样的问题……看来是和系统没关,问题是为什么啊:3:

难道和cocos版本有关?

3.2实测没问题 = 。=

:12::12::12::12::12::12:

悲剧了,3.2拿到手机上一试就完蛋……:9:

没人解决么?话说box2d真难搞……