2012-10-16 52 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