2011-06-01 64 views
0

我遇到了一個關於在cocos2d/box2d中定位物體的奇怪問題。box2d b2_staticBody位置問題

如果我設置b2BodyDef類型爲b2_staticBody,我不能在PTM_RATIO的乘法器中的任何位置設置主體。讓我來解釋:

#define PTM_RATIO 32.0 

... 
myBodyDef_1.type = b2_staticBody; 
myBodyDef_1.position.Set(320.0/PTM_RATIO, 320.0/PTM_RATIO); 
... 

... 
myBodyDef_1.type = b2_staticBody; 
myBodyDef_1.position.Set(333.0/PTM_RATIO, 333.0/PTM_RATIO); 
... 

給出了相同的結果。位置沒有變化。 13像素的差異意味着什麼。

如果我比PTM_RATIO更重要,它會出現1 PTM_RATIO(32px)。

例如:

... 
myBodyDef_1.type = b2_staticBody; 
myBodyDef_1.position.Set(358.0/PTM_RATIO, 358.0/PTM_RATIO); 
... 

38px的Diffrence,但只出現32PX(1 PTM_RATIO)的距離。

我嘗試使用直接值,如1.0和1.1 它沒有奏效。我無法擺脫PTM_RATIO的乘數。

再一個提示,如果我使用b2_kinematicBody作爲類型,它的工作原理是完美的。

有什麼想法?

+0

,並通過調試器顯示什麼樣的地位? – Andrew 2011-06-02 04:01:06

+0

320.0和333.0都出現在320上。358.0出現在352 – erkanyildiz 2011-06-02 12:26:30

回答

1

嘗試添加顯式對話:358.0/((float)PTM_RATIO)。 嘗試myBodyDef_1.position = b2Vec2(333.0/PTM_RATIO,333.0/PTM_RATIO);並在這裏明確的談話。 嘗試

float x = 333.0/PTM_RATIO; 
float y = 333.0/PTM_RATIO; 
myBodyDef_1.position = b2Vec2(x, y); 

讓我知道結果,請

+0

358.0 /(浮動)PTM_RATIO工作。這很奇怪,因爲給予直接價值(11.1875)不起作用。 – erkanyildiz 2011-06-03 09:52:44

-1

myBodyDef_1.position.Set(333.0/PTM_RATIO, 333.0/PTM_RATIO);這裏333/PTM_RATIO給出的結果總是舍入到整數部分,因此在這裏你不能處理單個或小於32個像素。

包含358/32(PTM_Ratio),它在第11塊(320是第10),因此它會爲您提供下一個位置。

+0

333.0/32.0或333.0/32或333/32.0是浮點值,不是整數。它與333/32 – Andrew 2011-06-02 05:07:22

+0

是不一樣的,但是這些將會在小數點之後返回數字(1-9)的值。不能被Set設置爲一個位置。 – rptwsthi 2011-06-02 05:12:33

+0

設置方法需要兩個浮點參數,不是整數。正如我上面所說的那樣,運動型車身的功能非常完美。 – erkanyildiz 2011-06-02 12:24:08