在很多box2d遊戲中同樣會遇到這樣乙個問題:
如何使乙個body自然的按照乙個指定速度移動?
方法同上次所說的有三種:
1-直接設定body的線速度
這是最直接的方法,但是同樣的,並不是在box2d中最好的方法
b2body *body;//這樣做,如果只有乙個物體,你可以得到你想要的效果,但是如果有許多body,你會發現很多不符合物理規律的現象,這是由於你改變了body正在模擬的物理屬性。the body you want to conroll
b2vec2 vel;//
the vel you set
body->setlinearvelocity( vel );
2-對body施加乙個作用力
這種方法較前者更優,用到了動量定理ft = mv。
已知乙個物體的初速度vel,和物體質量body->getmass(),你要設定他t秒後的速度要變為desiredvel的話,可以計算出需要的力f=(v2-v1)*m/t
**如下:
b2vec2 vel = body->getlinearvelocity();
float m = body->getmass();//
the mass of the body
float t = 1.0f/60.0f; //
the time you set
b2vec2 desiredvel = b2vec2(10,10);//
the vector speed you set
b2vec2 velchange = desiredvel -vel;
b2vec2 force = m * velchange / t; //
f = mv/t
這裡得到的效果應該是和設定速度是一樣的,但是如果有多個物體時,能夠正確模擬碰撞對物體產生的效果。
3-對body施加乙個衝量
這種方法本質上和施加力是一樣的,但是可以不用考慮時間因素
b2vec2 vel = body->getlinearvelocity();
float m = body->getmass();//
the mass of the body
b2vec2 desiredvel = b2vec2(10,10);//
the vector speed you set
b2vec2 velchange = desiredvel -vel;
b2vec2 impluse = m * velchange; //
impluse = mv
BOX2D 自然的移動到乙個指定速度
接著上次的文章 在很多box2d遊戲中同樣會遇到這樣乙個問題 如何使乙個body自然的按照乙個指定速度移動?方法同上次所說的有三種 1 直接設定body的線速度 這是最直接的方法,但是同樣的,並不是在box2d中最好的方法 b2body body the body you want to conro...
Python實現按照指定要求逆序輸出乙個數字的方法
問題是 輸入乙個數字,按照指定要求逆序輸出該數字,很簡單,下面是實現 usr bin env python encoding utf 8 author 沂水寒城 功能 逆序輸出乙個數字 如果數字是正數直接輸出如 177 771 如果數字是負數保留負號如 945 549 如果數字以0結果逆序後需要去除...
BOX2D 自然的旋轉到乙個指定角度
在box2d 中如何控制body 自然的旋轉到乙個指定角度?這個問題在許多遊戲中控制角度時都會遇到,但是在box2d中,你必須考慮到如果轉動中與其他body碰撞等物理因素。能夠想到的解決方案有三種 1 在update方法裡不斷更改body的角度,使他接近於要設定的角度。b2vec2 clickedp...