我对此并不陌生,并且遇到了一个错误,我希望有人可以帮助我并解释我的错误。
错误:
第178行,在applyThrust中
shipPos = self.Fighter.getPos(self.origin)
AttributeError:“ Fighter”对象没有属性“ Fighter”
class Fighter(SphereCollideObj, object):
fighterCount = 0
def __init__(self, modelPath, parentNode, nodeName, posVec, traverser, scaleVec = 1.0):
super(Fighter, self).__init__(modelPath, parentNode, nodeName, 0, 0, 0, 3.0)
self.modelNode.setScale(scaleVec)
self.modelNode.setPos(posVec)
self.trav = traverser
self.origin = render.attachNewNode("origin")
self.origin.setPos(0, 0, 0)
self.origin.hide()
self.setKeyBindings()
self.hud = Hud("./Tools/Hud.x", self.modelNode, "Hud", (0, 10, 0))
def setKeyBindings(self):
self.accept("space", self.thrust, [1])
self.accept("space-up", self.thrust, [0])
def thrust(self,keyDown):
if keyDown:
taskMgr.add(self.applyThrust, "thrust")
else:
taskMgr.remove("thrust")
self.acceptOnce("space", self.thrust,[1])
self.acceptOnce("space-up", self.thrust,[0])
def applyThrust(self, task):
shipPos = self.Fighter.getPos(self.origin)
hudPos = self.hud.modelNode.getPos(self.origin)
trajectory = hudPos - shipPos
rate = 5
trajectory.normalize()
self.Fighter.setFluidPos(shipPos + trajectory * rate)
答案 0 :(得分:0)
在这种情况下,“自我”是什么?我的意思是,它代表什么类的对象? 我认为该错误消息很有帮助。
def applyThrust(self,task)->类Fighter的方法。
self.Fighter->调用“ Fighter”成员或“ self”的属性,在本例中为Fighter实例。
您将在self.Fighter.setFluidPos(...)中遇到相同的错误
答案 1 :(得分:0)
我认为Mircea想要说的是Fighter
中的self.Fighter.getPos(self.origin)
是多余的。看到对象属于类Fighter
,self.getPos(self.origin)
就足够了(假设超类具有一个名为getPos()
的方法,则无需显示其代码)。 / p>