Med_Ved12

Members
  • Content count

    4
  • Joined

  • Last visited

Community Reputation

103 Neutral

About Med_Ved12

  • Rank
    Newbie
  1. Thank you. I think its just one of those things where you need to step back and actually read the code and see whats going on. Really, thanks so much.
  2. In my program, the w,a,s,d keys control movement. I can get either w+a or s+d to work, but not both. Here is the input class: [source lang="python"]class inputs: videomode = None l = False r = False u = False d = False run = True def getkeys(self): for event in pygame.event.get(): if event.type == pygame.QUIT: self.run = False keys = pygame.key.get_pressed() if keys[pygame.K_a]: self.l = True else: self.l = False if keys[pygame.K_w]: self.u = True else: self.u = False if keys[pygame.K_d]: self.r = True else: self.r = False if keys[pygame.K_s]: self.d = True else: self.d = False[/source] Here is the input function in the game class (where i suspect the problem is): [source lang="python"]def iupd(self): self.i.getkeys() if self.i.r: self.player.vx = self.player.speed else: self.player.vx = 0 if self.i.l: self.player.vx = -self.player.speed else: self.player.vx = 0 if self.i.d: self.player.vy = self.player.speed else: self.player.vy = 0 if self.i.u: self.player.vy = -self.player.speed else: self.player.vy = 0[/source] I suspect that something's happening where the right and down get canceled out by the left and up, but I can't see how to correct this. Please help!
  3. 2d sliding collision detection

    Alright, i think i get what you're saying. So i don't need to check top, left, bottom, right, but rather x and y collision? Thanks for the help.
  4. 2d sliding collision detection

    So I've started working on an extremely simple 2d tiled sidescrolling engine, using pygame (i know, but pretty much only for rendering + input). The problem is that the way that I've set up collision detection causes an object to stop moving in all directions when it hits another object. Here's the code for collision detection: [source lang="python"] def checkcollision(ob1, ob2): if(ob1.x+ob1.w > ob2.x and ob1.x < ob2.x+ob2.w): if(ob1.y+ob1.h > ob2.y and ob1.y < ob2.y+ob2.h): return True else: return False else: return False def collision(): for atile in mainarea.tiles: if(checkcollision(player,atile)): player.move(-player.vx, -player.vy) player.vx = 0 player.vy = 0 [/source] My question is, how can I implement collision detection that will only stop movement along one axis, but allow the other axis to keep moving (cause 'sliding' along walls instead of sticking)? I apoligize if I'm asking in the wrong place, but it seems like a rather general question, and I didn't want to put this under physics, as I do not think it qualifies.