如何在Pyglet中进行精灵跳转?

时间:2014-12-07 16:28:35

标签: python pyglet

我一直在制作个人项目,以重拍SUper Mario Bros的修改版本。 到目前为止,我已经能够添加马里奥精灵以及地面和砖块。现在,我一直坚持如何让马里奥跳起来。有谁知道怎么做?

编辑:我已经为Mario上了一堂课,但是不能上班。有什么想法吗?

class mario(pyglet.sprite.Sprite):
    def __init__(self, batch):
        self._img_main = pyglet.image.load("Mario_Right.png")

        self.img_right1 = pyglet.image.load("Mario_Walk_Right1.png")
        self.img_right2 = pyglet.image.load("Mario_Walk_Right2.png")
        self.anim_right = pyglet.image.Animation.from_image_sequence([self.img_right1, self.img_right2], 0.5, True)
        pyglet.sprite.Sprite.__init__(self, self._img_main)
        self.time = 0

    def forward_movement(self, flag=True):
        if flag:
            self.image = self.anim_right 
        else:
            self.image = self._img_main
   def jump(self,flag=True):
        print time.time()-self.time
        self.y -= -10 +20**(time.time()-self.time+.2)

    def on_key_press(self, symbol, modifiers):
        self.keys_held.append(symbol)
        if symbol == pyglet.window.key.RIGHT:
            self.player.forward_movement(True)
        if symbol == pyglet.window.key.LEFT:
            self.player.time=time.time()
            self.player.jump()

1 个答案:

答案 0 :(得分:0)

尝试在代码上创建重力。首先,为你的马里奥创建一个类。设置他们的位置和速度。把方法跳到你的马里奥上。

#put this in your init
self.time = 0

#put this in your condition
if keymap[pyglet.window.key.RIGHT]:
    self.mario.time = time.time()
    self.mario.jump()

def jump(self):
    print time.time()-self.time
    self.y -= -10 +20**(time.time()-self.time+.2)