2012-10-16 50 views

回答

1

嘗試移動你的盒子模型,然後重新將它放到子彈節點中。

self.world.attachRigidBody(np.node()) 
model = loader.loadModel('models/box.egg') 
model.setPos(-0.5,-0.5,-0.5)     # <- Add this line 
model.reparentTo(np) 

調整模型位置是必要的,因爲子彈形狀的假設,該模型的核心是它的(0,0,0)座標,但在大多數情況下,(0,0,0)實際上是界限的模型。

編輯:

爲了解決你的紋理問題的嘗試:

model.setTexture(tex, 1) 

...而不是...

model.setTexture(tex) 

從手動片段:

Normall y,你只需將1作爲第二個參數傳遞給setTexture()。 如果沒有此覆蓋,直接在 Geom級別分配的紋理將優先於您在 模型節點處進行的狀態更改,並且不會進行紋理更改。

+0

嘿!非常感謝,現在盒子已經對齊了。但是,仍然有一個小問題。該程序沒有使用盒子附帶的紋理(在彩虹盒開始出現之前它曾經工作過一次),它仍然使用彩虹紋理。有任何想法嗎? – kassarin

+0

box紋理設置在box.egg文件中。你可以看到它,如果你用文本編輯器打開box.egg。您可以單獨保留該文件,並從Python代碼覆蓋該紋理。看看手冊:http://www.panda3d.org/manual/index.php/Multitexture_Introduction –

+0

'model = loader.loadModel('models/box.egg') tex = loader.loadTexture('models/wood.png') model.setTexture(tex); ' 我試過了,它不起作用,仍然是彩虹盒。 – kassarin