我有一个带有几个对象的搅拌器场景,当鼠标悬停在其中一个对象上时,我会得到对象名称,设置一个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
答案 0 :(得分:0)
我想您可以使用SCA_MouseSensor
传感器及其hitObject
属性来获取鼠标所在的最后一个对象。它返回None
或KX_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