2010-04-02 51 views
7

我使用Box2d作爲自頂向下的遊戲。 「地面」是一系列瓷磚,其中每個瓷磚是具有傳感器形狀的靜態物體。即使物體沒有真正與地面「碰撞」,我也可以讓摩擦生效嗎?Box2d中的摩擦

如果Box2d不會讓我這樣做,我考慮嘗試通過檢測當前正在移動物體的力以及施加與其相反的力來實現我自己的目標,但是我不太清楚如何檢測力。

回答

0

ApplyImpulse()而不是ApplyForce()效果更好。

+3

爲什麼'ApplyImpulse()'比'ApplyForce()'更好? – 2012-05-27 03:37:16

6

這樣做的另一種方法是在您的身體上設置linearDamping。您可以根據您的對象所在的拼貼塊進行不同的設置。

1

摩擦是針對身體的速度,無論其他力量如何。

如果設置線性阻尼不夠或者依賴於b2Body的屬性是不合適的,您可以輕鬆計算非線性摩擦力並在每幀中調用ApplyLinearImpulse()或ApplyLinearForce()。

  • 查詢與b2Body.GetLinearVelocity速度(),比例(非線性),以根據需要得到的力,並且反轉兩種成分的符號的結果。如果你決定停止身體(當它足夠緩慢地粘住)時,SetLinearVelocity()會在沒有計算的情況下執行這個技巧。