python - Really struggling with jumping -


i've tried try , make sprite jump i've decided start scratch , try , find way again. way guys can help. collision detection depends on vspeed dont think can set vspeed 0 when hit platform. i've been stuck on ages. right character moves , down. simple jump need. appreciated!

class player(pygame.sprite.sprite): def __init__(self,x,y,width = 65, height = 35):     pygame.sprite.sprite.__init__(self)     self.x = x     self.y = y     self.hspeed,self.vspeed = 2,4      self.images=[]     r0 = pygame.image.load("images\player\i1.png")     r1 = pygame.image.load("images\player\i2.png")     r2 = pygame.image.load("images\player\i3.png")     r3 = pygame.image.load("images\player\i4.png")     self.hurt = pygame.image.load("images\player\hurt.png")     self.images.append(r0)     self.images.append(r1)     self.images.append(r2)     self.images.append(r3)      self.rotatedimages = []     rr0 = pygame.transform.flip(r0 ,true, false)     rr1 = pygame.transform.flip(r1 ,true, false)     rr2 = pygame.transform.flip(r2 ,true, false)     rr3 = pygame.transform.flip(r3 ,true, false)     self.rotatedimages.append(rr0)     self.rotatedimages.append(rr1)     self.rotatedimages.append(rr2)     self.rotatedimages.append(rr3)      self.gravity = 0.5     self.index = 0     self.image = self.images[self.index]     self.rect = pygame.rect(self.x,self.y,width,height)      self.timenum=0     self.timetarget=10     self.timer = 0     self.collision = false  def level1platcoll(self, blocklistgrass, traplist, enemygroup, powerups):     platformcollision = pygame.sprite.spritecollide(self, blocklistgrass, false )     each_object in platformcollision:         self.collision = true         if self.collision == true:             self.onground = true             if self.vspeed > 0:                 self.rect.bottom = each_object.rect.top              if self.vspeed <0:                 self.rect.top = each_object.rect.bottom  def move(self):      key = pygame.key.get_pressed()      if key[pygame.k_left]:        self.rect.move_ip(-self.hspeed,0)      if key[pygame.k_right]:        self.rect.move_ip(self.hspeed,0)      if key[pygame.k_up]:        self.rect.y -= self.vspeed      if key[pygame.k_down]:         self.rect.y += self.vspeed 

  1. when press k_up set vchange = vspeed (and self.onground = false)

  2. in every frame/loop use y -= vchange jump

  3. in every frame/loop use vchange -= gravity slow down jump.

first move player up, gravity slow down player , make player moving down.

(when "press" mean single moment when key change state pygame.keyup pygame.keydown - not when keep pressed - have use for event in pygame.event.get() instead of pygame.key.get_pressed() or check onground k_up )


Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

android - Keyboard hides my half of edit-text and button below it even in scroll view -

css - Make div keyboard-scrollable in jQuery Mobile? -