接著上次的文章
在很多box2d遊戲中同樣會遇到這樣乙個問題:
如何使乙個body自然的按照乙個指定速度移動?
方法同上次所說的有三種:
1-直接設定body的線速度
這是最直接的方法,但是同樣的,並不是在box2d中最好的方法
b2body *body;//the body you want to conroll
b2vec2 vel;//
the vel you set
body->setlinearvelocity( vel );
這樣做,如果只有乙個物體,你可以得到你想要的效果,但是如果有許多body,你會發現很多不符合物理規律的現象,這是由於你改變了body正在模擬的物理屬性。
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
最終效果也能夠讓人滿意。
that『s all
BOX2D 自然的旋轉到乙個指定角度
在box2d 中如何控制body 自然的旋轉到乙個指定角度?這個問題在許多遊戲中控制角度時都會遇到,但是在box2d中,你必須考慮到如果轉動中與其他body碰撞等物理因素。能夠想到的解決方案有三種 1 在update方法裡不斷更改body的角度,使他接近於要設定的角度。b2vec2 clickedp...
body自然的按照乙個指定速度移動
在很多box2d遊戲中同樣會遇到這樣乙個問題 如何使乙個body自然的按照乙個指定速度移動?方法同上次所說的有三種 1 直接設定body的線速度 這是最直接的方法,但是同樣的,並不是在box2d中最好的方法 b2body body the body you want to conroll b2vec...
編寫儲存過程將異常節點移動到新建的乙個節點下
在處理之前,新節點的相關資訊已經插入到表中了 v normal node res id 唯一正常的節點的res id v new node res id 新建的節點的res id 功能 將異常節點及其子節點移動到新建的乙個節點,作為其子節點 注意 需要獲取新節點的級別,比如說為3 則需要做的操作如下...