1. 程式人生 > >cocos 剛體穿透解決方案。

cocos 剛體穿透解決方案。

剛體穿透:打個比方,比如一個圓球在一個正方形的方框裡面不同的彈射。當圓球達到一定的速度時候,會出現一個bug,圓球會直接彈出方框,還沒有進行正確的碰撞檢測。 這種情況叫做剛體穿透。之所以出現這種情況是因為圓球速度過快,方框的厚度不夠,那麼在剎那的短時間內系統沒有對其進行碰撞檢測,而當球剛好已經穿過方框後才進行碰撞檢測就不行了。

cocos3.7版本提出了他的解決方案,比如在一幀做一次碰撞檢測,那麼我們可以在1幀做3次碰撞檢測(這種比方也許不是很正確,大概這個意思。)

我們來下面的程式碼。在我們的場景類中加入如下程式碼。

void  GameScene::update(float dt)
{
    for
(int i = 0; i < 3; ++i) { mScene->getPhysicsWorld()->step(1 / 180.0f); } } void GameScene::startUpdate(float dt) { //防止剛體穿透。 mScene->getPhysicsWorld()->setAutoStep(false); scheduleUpdate(); }

GameScene是繼承Layer,結構跟helloWord一樣,在init裡面呼叫startUpdate就OK了。