游戏Python中的碰撞问题
我目前正在使用Python3.2.3和pygame创建一个游戏。我正在创建一个非常类似于马里奥(一个侧滚器)的游戏;我的游戏包括一系列的“砖块”,角色需要跳上去并能够与之碰撞。我已经在photoshop和mask中创建了一个色码级别,这样红色是角色将死亡的区域,绿色是砖块的颜色,蓝色是地面的颜色。以下是我遇到问题的代码:游戏Python中的碰撞问题,python,pygame,collision,Python,Pygame,Collision,我目前正在使用Python3.2.3和pygame创建一个游戏。我正在创建一个非常类似于马里奥(一个侧滚器)的游戏;我的游戏包括一系列的“砖块”,角色需要跳上去并能够与之碰撞。我已经在photoshop和mask中创建了一个色码级别,这样红色是角色将死亡的区域,绿色是砖块的颜色,蓝色是地面的颜色。以下是我遇到问题的代码: guy[y]+=guy[vy] # add current speed to Y col = mask.get_at((int(guy[x]+662), in
guy[y]+=guy[vy] # add current speed to Y
col = mask.get_at((int(guy[x]+662), int(guy[y]+59)))
if col == (0,0,255,255):
guy[y] = 537
guy[vy] = 0
guy[onground] = True
if col == (0,255,0,255):
guy[vy] = 0
guy[onground]=True
elif col == (255,0,0,255):
guy[vy] = 5
guy[onground] = False
if guy[y]+59 >= 720:
lives -= 1
screen.blit(guyPic,(640,guy[y]))
guy[vy]+=.75
当我试图让角色降落在砖块上(或果岭上)时,他降落了,但他开始下沉。他还可以直接穿过砖块。我希望角色能够与砖块碰撞,这样他就不能直接穿过砖块,但他能够跳跃并降落在砖块上而不会下沉。我确实知道另一种可能的方法,即在每个砖的坐标处绘制矩形,但这种方法效率很低,因为代码太多。我非常感谢您对这个错误的帮助,因为我在过去的两周里一直在尝试修复它。感谢您的帮助 绘制矩形更好。而且逻辑上更简单。您可以检测两个矩形是否发生碰撞,因为pygame已经支持碰撞检测。您可以看到:确保将“guy[vy]+=.75”放在代码的开头。在这之前,不管碰撞如何设置y速度,它总是在代码末尾被设置回.75。因此,当你触地时,你仍然会以.75 y的速度通过它。还可以尝试通过为“guy[vy]+=.75”添加一个条件语句来限制最大下降速度,这样它只会在“guy[y]时”运行
guy[y]+=guy[vy] # add current speed to Y
guy[vy]+=.75
col = mask.get_at((int(guy[x]+662), int(guy[y]+59)))
if col == (0,0,255,255):
guy[y] = 537
guy[vy] = 0
guy[onground] = True
if col == (0,255,0,255):
guy[vy] = 0
guy[onground]=True
elif col == (255,0,0,255):
guy[vy] = 5
guy[onground] = False
if guy[y]+59 >= 720:
lives -= 1
screen.blit(guyPic,(640,guy[y]))