import direct.directbase.DirectStart
from direct.showbase.DirectObject import DirectObject
from pandac.PandaModules import *
from direct.gui.DirectGui import OnscreenText
from direct.gui.DirectGui import OnscreenImage
from direct.task import Task
from direct.actor.Actor import Actor
from direct.interval.IntervalGlobal import *
import math,sys
class world(DirectObject):
def _init_ (self):
#Carico il modello 'ship1'
self.ship=loader.loadModel('Models/ship1')
self.ship.reparentTo(render)
#Carico l'ambiente amb1
self.amb1=loader.loadModel('Models/amb1')
self.amb1.reparentTo(render)
#posiziono la camera
base.disableMouse()
base.camera.setPosHpr(self.ship.getX()-60,self.ship.getY(),self.ship.getZ()+9,self.ship.getH()+270,0,0)
self.accept('arrow_up',self.setKey,['avanti',1])
self.accept('arrow_up-up', self.setKey, ['avanti',0])
taskMgr.add(self.move,"moveTask")
def setKey (self,key,value):
self.keyMap[key]=value
def move (self,task):
if (keyMap['avanti']!=0):
self.ship.setPos(self.ship.getX()+5,self.ship.getY(),self.ship.getZ())
w=world()
run()
but the result is a blank window.
what is the problem? can you help me please?
[/code]
Now I’m trying to do the same thing without classes.
import direct.directbase.DirectStart
from direct.showbase.DirectObject import DirectObject
from pandac.PandaModules import *
from direct.gui.DirectGui import OnscreenText
from direct.gui.DirectGui import OnscreenImage
from direct.task import Task
from direct.actor.Actor import Actor
from direct.interval.IntervalGlobal import *
import math,sys
#Carico il modello 'ship1'
ship=loader.loadModel('Models/ship1')
ship.reparentTo(render)
#Carico l'ambiente amb1
amb1=loader.loadModel('Models/amb1')
amb1.reparentTo(render)
amb1.setPosHpr(50,4,-5,90,0,0)
#posiziono la camera
base.disableMouse()
base.camera.setPos(ship.getX()-60,ship.getY(),ship.getZ()+9)
base.camera.lookAt(ship)
run()
import direct.directbase.DirectStart
from direct.showbase.DirectObject import DirectObject
from pandac.PandaModules import *
from direct.gui.DirectGui import OnscreenText
from direct.gui.DirectGui import OnscreenImage
from direct.task import Task
import math
class world (DirectObject):
def _init_(self):
self.keyMap={'avanti':0}
#Carico il modello 'ship1'
self.ship=loader.loadModel('Models/ship1')
self.ship.reparentTo(render)
#Carico l'ambiente amb1
self.amb1=loader.loadModel('Models/amb1')
self.amb1.reparentTo(render)
self.amb1.setPosHpr(50,4,-5,90,0,0)
#posiziono la camera
base.disableMouse()
base.camera.setPos(self.ship.getX()-60,self.ship.getY(),self.ship.getZ()+9)
base.camera.lookAt(self.ship)
self.accept('arrow_up',setkey,['avanti',1])
taskMgr.add(self.move,'moveTask')
def setkey(self,key,value):
self.keyMap[key]=value
def move(self,task):
if (keyMap['avanti']!=1) :
self.ship.setPos(self.ship.getX()+1,self.ship.getY(),self.ship.getZ())
w=world()
run()
You have misspelled the name of the init method (it should have a double leading and trailing underscore, not a single underscore). Your constructor is never getting called!
I discovered this by pasting your code and discovering that w.keyMap, w.ship, and w.amb1 were all undefined, as if they’d never been assigned.
import direct.directbase.DirectStart
from direct.showbase.DirectObject import DirectObject
from pandac.PandaModules import *
from direct.gui.DirectGui import OnscreenText
from direct.gui.DirectGui import OnscreenImage
from direct.task import Task
import math
class world (DirectObject):
def __init__(self):
self.keyMap={'avanti':0}
#Carico il modello 'ship1'
self.ship=loader.loadModel('Models/ship1')
self.ship.reparentTo(render)
#Carico l'ambiente amb1
self.amb1=loader.loadModel('Models/amb1')
self.amb1.reparentTo(render)
self.amb1.setPosHpr(50,4,-5,90,0,0)
#posiziono la camera
base.disableMouse()
base.camera.setPos(self.ship.getX()-60,self.ship.getY(),self.ship.getZ()+9)
base.camera.lookAt(self.ship)
self.accept('arrow_up',self.setkey,['avanti',1])
taskMgr.add(self.move,'moveTask')
def setkey(self,key,value):
self.keyMap[key]=value
def move(self,task):
if (self.keyMap['avanti']!=1) :
self.ship.setFluidPos(self.ship.getX()+10,self.ship.getY(),self.ship.getZ())
w=world()
run()