Beispiel #1
0
    def move(self, val):
        #Set the 'state' of the player's movement
        if val == 0:
            if self.state == 1 or self.state == 3: self.state = 2
            else: self.state = 0
        else:
            if self.state == 0 or self.state == 2: self.state = 1
            else: self.state = 3

        if self.frozen:
            #Move to a stop
            self.velocity = Vector2.lerp(self.velocity, Vector2(0, 0),
                                         self.inertia)
        else:
            if val != 0:
                self.dir = val
            #Regular movement
            self.velocity = Vector2.lerp(
                self.velocity, Vector2(val * self.speed, self.velocity.y),
                self.inertia)
    def render(self, display):
        if self.target:
            screen_center = Vector2(display.get_size()) / 2

            #Smooth camera movement
            #TODO: Add borders for edges of map???
            goal = (self.target.position - screen_center) / self.target.z
            self.position = Vector2.lerp(self.position, goal, self.targetSpeed)


        for obj in objects.getObjectsOfType(GameObject):
            #Excluded GameObjects
            if obj.__class__ in [Camera]: continue
            if obj.visible and obj.z < self.z:
                #Reorient the position
                new_pos = Vector2(obj.position.x, display.get_height() - obj.position.y - obj.scale.y)

                #Offset based on camera position and parallax
                new_pos -= Vector2(self.position.x, -self.position.y) * obj.z

                if type(obj) == GameObject:
                    display.blit(obj.updateSprite(), new_pos)
                else:
                    obj.render(display, new_pos)
Beispiel #3
0
 def lerp(start, end, percent):
     return Point(Vector2.lerp(start, end, percent))