Ejemplo n.º 1
0
Archivo: bt2.py Proyecto: btdevel/bt
    def __init__(self):
        ShowBase.__init__(self)
        self.disableMouse()
        self.camera.setPos(10, -80, 70)
        self.camera.lookAt(10, 20, 0)
        self.camLens.setFov(90.0)
        self.win.setClearColor(Vec4(0,0,0,0))

        make_level(self.render)

        self.accept("escape", exit)
        self.accept("arrow_up", self.forward)
        self.accept("arrow_down", self.reverse)
        self.accept("arrow_left", self.turn_left)
        self.accept("arrow_right", self.turn_right)

        self.accept("1", self.set_camera)
        self.accept("2", self.set_camera_out)
        self.accept("3", self.spin_camera_left)
        self.accept("4", self.spin_camera_right)
    
        slight = PointLight('slight')
        slight.setColor(Vec4(1, 1, 1, 1))
        slnp = render.attachNewNode(slight)
        render.setLight(slnp)
        slnp.setPos(self.camera, 0, 0, 20)

        alight = AmbientLight('alight')
        alight.setColor((0.2, 0.2, 0.2, 1))
        alnp = render.attachNewNode(alight)
        render.setLight(alnp)

        title = OnscreenText(text="Bard's Tale I",
                             style=1, fg=(1,1,1,1),
                             pos=(0.7,0.92), scale = .07)

        self.dir = Direction()
        self.pos = Vector([0, 0])
        self.set_camera()

        self.map = make_map()
Ejemplo n.º 2
0
Archivo: bt2.py Proyecto: btdevel/bt
class App(ShowBase):
    def __init__(self):
        ShowBase.__init__(self)
        self.disableMouse()
        self.camera.setPos(10, -80, 70)
        self.camera.lookAt(10, 20, 0)
        self.camLens.setFov(90.0)
        self.win.setClearColor(Vec4(0,0,0,0))

        make_level(self.render)

        self.accept("escape", exit)
        self.accept("arrow_up", self.forward)
        self.accept("arrow_down", self.reverse)
        self.accept("arrow_left", self.turn_left)
        self.accept("arrow_right", self.turn_right)

        self.accept("1", self.set_camera)
        self.accept("2", self.set_camera_out)
        self.accept("3", self.spin_camera_left)
        self.accept("4", self.spin_camera_right)
    
        slight = PointLight('slight')
        slight.setColor(Vec4(1, 1, 1, 1))
        slnp = render.attachNewNode(slight)
        render.setLight(slnp)
        slnp.setPos(self.camera, 0, 0, 20)

        alight = AmbientLight('alight')
        alight.setColor((0.2, 0.2, 0.2, 1))
        alnp = render.attachNewNode(alight)
        render.setLight(alnp)

        title = OnscreenText(text="Bard's Tale I",
                             style=1, fg=(1,1,1,1),
                             pos=(0.7,0.92), scale = .07)

        self.dir = Direction()
        self.pos = Vector([0, 0])
        self.set_camera()

        self.map = make_map()


    def spin_camera_right(self, degrees=360):
        s = self.dir.dir * 90.0
        self.camera.hprInterval(1, Point3(s, 0, 0), 
                                startHpr=Point3(s+degrees, 0, 0)).start()
    def spin_camera_left(self, degrees=360):
        s = self.dir.dir * 90.0
        self.camera.hprInterval(1, Point3(s, 0, 0), 
                                startHpr=Point3(s-degrees, 0, 0)).start()

    def set_camera(self):
        print self.pos, self.dir
        def pos2vec(pos):
            return Point3(pos[0]*2, pos[1]*2, 0)
        pos = pos2vec(self.pos)
        dir = pos2vec(self.dir.forward_vec)
        
        self.camera.setPos(pos)
        self.camera.setPos(Point3(pos-dir*0.5))
        self.camera.lookAt(Point3(pos+dir))

    def set_camera_out(self):
        self.camera.setPos(10, -80, 70)
        self.camera.lookAt(10, 20, 0)

    def forward(self):
        self.pos = self.pos + self.dir.forward_vec
        self.set_camera()

    def reverse(self):
        self.dir.reverse()
        self.set_camera()

    def turn_left(self):
        self.dir.left()
        self.set_camera()

    def turn_right(self):
        self.dir.right()
        self.set_camera()