v3.4新建的摄像机在移动的时候会造成角色移动一顿一顿的

一个跑酷游戏,实现方法是角色用物理往右移动,新建的2D摄像机平滑跟随。

但是有一个问题:在摄像机跟着移动的过程,角色一开始会产生一顿一顿的现象,就是快速往右瞬移一段距离,然后又快速回来,跑一段(大概3个屏)之后就好很多;另外,手机越低端,这问题出现越频繁。

测试过了,要不要物理都会有这问题,而摄像机不移动的时候没有问题。

测试了很多东西才定位到摄像机上面来,但是COCOS的摄像机没有什么参数可以调的,具体怎么实现的我又不懂,现在这问题基本算是解决不了。。。如果不要摄像机的话,除了代码要大改,游戏设定也得改,成本很高。

还请各位朋友多多赐教。

写了个测试代码:
1.任意新建一个3.x的工程,把HelloWorld的代码改成下面这样:

HelloWorld.h

在原来代码(CREATE_FUNC(HelloWorld);)后面添加

void update(float dt);

private:
bool hasInited;

cocos2d::Sprite* player;
cocos2d::Camera* mainCam;

HelloWorld.cpp

修改init()方法,如下:
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !Layer::init() )
{
return false;
}

Size vSize = Director::getInstance()->getVisibleSize();

// set custom camera.
mainCam = Camera::createOrthographic(vSize.width, vSize.height, -10, 10);
mainCam->setCameraFlag(CameraFlag::USER1); // 摄像机照射的层//
mainCam->setPosition(Vec2::ZERO);
this->addChild(mainCam);

// set player.
player = Sprite::create("CloseNormal.png");
player->setScale(3);
player->setPosition(200, 300);
this->addChild(player);

player->setCameraMask((unsigned short)CameraFlag::USER1);  // 显示到自定义摄像机下//


// update.
scheduleUpdate();

hasInited = false;


return true;

}

实现新加的update(float)方法,如下:
void HelloWorld::update(float dt)
{
// camera follow smoothly.
float cameraTargetPosX = player->getPositionX() - 200; // 与角色保持一定距离//

Vec2 targetPos = Vec2(cameraTargetPosX, mainCam->getPositionY());

mainCam->setPosition( mainCam->getPosition().lerp(targetPos, 0.1) );


// move player(did not use physics)
if ( player->getPositionX() > 10000 ) {
    player->stopAllActions();
    player->setPositionX(200);
    
    mainCam->setPositionX(0);
    
    hasInited = false;
}

if ( hasInited == false ) {
    MoveBy* move = MoveBy::create(20, Vec2(12000, 0));
    
    player->runAction(Sequence::create(DelayTime::create(2), move, NULL));
    
    hasInited = true;
}

}

  1. 编译测试即可。

PS: 背景是黑的没关系,那个关闭按钮(角色)在颤抖,就是我说的问题。

在手机上这个颤抖的幅度很夸张,即使角色有动作,肉眼还是能很明显看出来,跑的时候更明显。

请问有解决到么?要怎么解决?

为啥不是底层障碍物移动,人物控制动作,实际上一直在原地,这样就不需要控制摄像机了啊