获取对象名称的问题

时间:2012-05-16 12:51:31

标签: python game-engine blender

我有一个带有几个对象的搅拌器场景,当鼠标悬停在其中一个对象上时,我会得到对象名称,设置一个empy对象的属性。 我现在拥有的只是场景对象列表。我该怎么办?

import GameLogic
cont=GameLogic.getCurrentController()
obj=cont.getOwner()
print obj
objlist=GameLogic.getCurrentScene().getObjectList()
print objlist
sen=cont.getSensor('sensor')
if sen.isPositive():
    print objlist[0]
    PropName=.... #how to set this with the object name?
    print PropName

2 个答案:

答案 0 :(得分:0)

我想您可以使用SCA_MouseSensor传感器及其hitObject属性来获取鼠标所在的最后一个对象。它返回NoneKX_GameObject类型的对象。获得它后,您可以使用其name属性来获取名称(或只访问该对象的其他属性)。

参考链接:

我还没有对此进行过测试,但我认为它在Blender Game Engine中使用时应该可行。我发现的信息是指Blender 2.59,因此请确保使用适当版本的应用程序。

答案 1 :(得分:0)

为了对别人有用,我回答了我自己的问题。我所做的是为场景中的每个对象设置一个mouse over传感器,并添加一个python脚本控制器,以便设置场景Empty object的属性。

import GameLogic
import Rasterizer as r
r.showMouse(1)   #just in order to get the mouse visible within the game engine
print 'SetProperty.py\n'
cont=GameLogic.getCurrentController()
obj=cont.getOwner()
emptyOb = GameLogic.getCurrentScene().getObjectList()["OBEmpty"]
emptyOb.EmptyProp=obj
print 'object name, within emptyProp: ', emptyOb.EmptyProp