def update(self, evt):
        #self.camera.setPos(0,-100,100)

        lifes = self.player.getPythonTag("ObjectController").getLifes()

        if (lifes > 2):
            self.lifes[0].show()
            self.lifes[1].show()
        elif (lifes > 1):
            self.lifes[0].show()
            self.lifes[1].hide()
        elif (lifes > 0):
            self.lifes[0].hide()
            self.lifes[1].hide()

        self.camera.lookAt(self.player)
        self.rails.setPos(self.scene, Path.getXOfY(self.rails_y), self.rails_y,
                          12.4)
        self.rails.setHpr(Path.getHeading(self.rails_y), 0, 0)
        self.dirLight.color = (self.rails_y / 600, 0.7, 1, 1)
        self.camera.setHpr(Path.getHeading(self.rails_y), 0, 0)

        if (self.onGame):
            self.rails_y = self.rails_y + globalClock.getDt() * 10
            #self.player.setPos(self.rails, 0, 0, sin(self.z/10.0)*40 )
            relX, relZ, isShooting = self.player.getPythonTag(
                "ObjectController").update(self.rails, globalClock.getDt())
            self.camera.setPos(self.rails, relX, -30, relZ)
            if (isShooting):
                self.fireSound.play()
                b = Bullet(
                    self.bullet, self.scene, self.player.getPos(self.scene),
                    base.cTrav, self.CollisionHandlerEvent,
                    self.scene.getRelativeVector(self.player,
                                                 Vec3(0, 1, 0)), 40, 0x4)
            enemies = self.scene.findAllMatches("dynamicEnemy")
            for e in enemies:
                enemy = e.getPythonTag("ObjectController")
                enemy.update(self.scene, globalClock.getDt(), self.player,
                             self.bullet)

            bullets = self.scene.findAllMatches("bulletC")
            for b in bullets:
                bullet = b.getPythonTag("ObjectController")
                bullet.update(self.scene, globalClock.getDt(), self.player)

        return Task.cont
예제 #2
0
    def update(self, task):
        extraX, extraZ = self.player.getPythonTag("ObjectController").update(
            self.rails, globalClock.getDt())
        self.rails.setPos(self.scene, Path.getXOfY(self.rails_y), self.rails_y,
                          20)
        #self.camera.lookAt(self.player)
        self.camera.setHpr(Path.getHeading(self.rails_y), 0, 0)
        self.rails.setHpr(Path.getHeading(self.rails_y), 0, 0)
        self.camera.setPos(self.rails, extraX, -10, extraZ)
        self.rails_y = self.rails_y + 20 * globalClock.getDt()

        if self.player.getPythonTag("ObjectController").getShoot():
            v = self.render.getRelativeVector(self.rails, Vec3(0, 1, 0))
            b = Bullet(self.render,
                       self.player.getPos(self.render),
                       self.enemy,
                       base.cTrav,
                       self.collisionHandlerEvent,
                       v,
                       collisionMask=0x3)

        bullets = self.render.findAllMatches("bullet")

        for i in bullets:
            b = i.getPythonTag('ObjectController')
            b.update(globalClock.getDt())

        enemies = self.scene.findAllMatches("dynamicEnemy")

        for i in enemies:
            e = i.getPythonTag('ObjectController')
            s = e.update(globalClock.getDt(), self.rails)
            if (s):
                dir = self.player.getPos(self.render) - i.getPos(self.render)
                dir.normalize()
                b = Bullet(self.render,
                           i.getPos(self.render),
                           self.enemy,
                           base.cTrav,
                           self.collisionHandlerEvent,
                           dir,
                           collisionMask=0xC)

        return Task.cont