3

我有一个带有几个对象的搅拌机场景,当鼠标悬停在其中一个对象上时,我会得到对象名称,设置一个 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
4

2 回答 2

0

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

参考链接:

我还没有对此进行测试,但我想它在 Blender 游戏引擎中使用时应该可以工作。我找到的信息是指 Blender 2.59,因此请确保使用的是应用程序的适当版本。

于 2012-05-21T21:07:19.063 回答
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
于 2012-06-03T09:49:16.170 回答