So I have just returned to coding with a smaller project to gain experience with panda3d. I dropped my last project it was too hard…
from direct.task import Task
import math
from direct.showbase.ShowBase import ShowBase
from panda3d.core import *
from direct.actor.Actor import Actor
from direct.interval.IntervalGlobal import *
from direct.gui.OnscreenText import OnscreenText
from pandac.PandaModules import loadPrcFileData
from panda3d.core import Vec3
from direct.gui.OnscreenImage import OnscreenImage
class Application(ShowBase):
def __init__(self):
ShowBase.__init__(self)
self.cam.setPos(0, -30, 25)
self.dude = mainDude()
self.cam.setP(-25)
self.initialGround = self.loader.loadModel("block")
self.initialGround.setSy(5)
self.initialGround.reparentTo(render)
self.initialGround.setZ(-15)
self.taskMgr.add(self.moveDude, "move dude", extraArgs = [self.dude], appendTask = True)
self.block = None
def isWhole(self, x):
if(x%1 == 0):
return True
else:
return False
def addGround(self, task):
self.frame = task.frame
if self.isWhole(self.frames/4) and (self.frames/4) != 0:
self.block.removeNode()
self.block = loader.loadModel("block")
self.block.reparentTo(render)
return task.cont
def moveDude(self, dude, task):
dude.setY(dude.getY()+3) <----- ERROR IS HERE
class mainDude(object):
def __init__(self):
self.load()
def load(self):
self.dude = Actor("char")
self.dude.reparentTo(render)
self.dude.loop("Run")
self.dude.setPos(Vec3(0, 5, 0))
self.dude.setH(180)
But this gives me attribute Error mainDude has no attribute setY. I know I need to return self.dude back to the thing that initiates the mainDude class, but I don’t know how!
Thanks.