Hi, it’s me again, with the same problem, unfortunately…I have this code:
class Game(DirectObject):
def init(self):
self.text = genLabelText(“Curling”, -1, 0.95, 1, 1, 1, 1, 0.07)
self.setupGame()
self.loadModel()
self.setKeyboardControl()
taskMgr.add(self.moveBall,"ballFunc")
def setupGame(self):
base.disableMouse()
base.camera.setPos(0, 50, 3)
base.setBackgroundColor(0.3, 0.5, 0.5)
self.previousTime = 0
self.dontStop = False
def setKeyboardControl(self):
self.keyMap = {"left":0, "right":0, "shoot":0}
self.accept("escape", sys.exit)
self.accept("a", self.setKey, ["left",1])
self.accept("d", self.setKey, ["right",1])
self.accept("space", self.setKey, ["shoot",1])
self.accept("a-up", self.setKey, ["left",0])
self.accept("d-up", self.setKey, ["right",0])
self.accept("space-up", self.setKey, ["shoot",0])
taskMgr.add(self.move,"moveFunc")
def setKey(self, key, value):
self.keyMap[key] = value
def loadModel(self):
self.staticModel = loader.loadModel("bunny")
self.staticModel.reparentTo(render)
self.staticModel.setPos(-1, 15, 0)
base.camera.setPos(0, -50, 100)
base.camera.setP(base.camera.getP() + 15)
base.camera.lookAt(self.staticModel)
self.env = loader.loadModel("environment")
self.env.reparentTo(render)
self.env.setScale(0.25,0.25,0.25)
self.env.setPos(0, 20, 0)
def move(self, task):
elapsedTime = task.time - self.previousTime
self.contador = 0
if (self.keyMap["left"] != 0):
self.staticModel.setPos(self.staticModel.getX() - elapsedTime * 15, self.staticModel.getY(), 0)
base.camera.lookAt(self.staticModel)
if (self.keyMap["right"] != 0):
self.staticModel.setPos(self.staticModel.getX() + elapsedTime * 15, self.staticModel.getY(), 0)
base.camera.lookAt(self.staticModel)
if (self.keyMap["shoot"] != 0):
self.dontStop = True
self.previousTime = task.time
return Task.cont
def moveBall (self, task):
self.friction = 0.9
self.speedInit = 10
#self.speedFinal = self.speedInit - self.friction
if (self.dontStop == True):
self.speedFinal = self.speedInit - self.friction
self.staticModel.setPos(self.staticModel.getX(), self.staticModel.getY() - self.speedFinal, 0)
base.camera.lookAt(self.staticModel)
print self.speedFinal
if (self.speedFinal <= 0):
self.dontStop = False
return Task.cont
According to my teacher, this is correct, but I can’t make the friction works…The model just keep going up with the same velocity…I tried to use this: while ( self.speedFinal < 0): , but I only get an infinity loop =P. Does anyone knows what I’m doing wrong?