我正在试着检测玩家是否击中了障碍物,如果是的话,当然要阻止他们(例如,如果它撞到左边的墙,它就不能向左移动)。所以它很好,我做了上下碰撞,但是由于某种原因,当我继续做左边的碰撞时(最后一个if语句),玩家就能通过这个块移动,我不知道为什么,因为if语句基本上是相同的。
FYI: pX是玩家的x坐标,pY是玩家的y坐标,XnY1是块的y坐标,XnY是块的x坐标,playerSize是正方形,所以50x50。
level = ["W","W","W","W","W","W","W","W","W","W","W","W",
"N","N","N","N","N","N","N","N","N","N","N","N","L",
"N","N","N","N","N","N","N","N","N","N","N","N","L",
"N","N","N","N","N","N","N","N","N","N","N","N","L",
"N","N","N","N","N","N","N","N","N","N","N","N","L",
"N","N","N","N","N","N","P","N","N","N","N","N","L",
"N","N","N","N","N","N","N","N","N","N","N","N","L",
"N","N","N","N","N","N","N","N","N","N","N","N","L",
"N","N","N","N","N","N","N","N","N","N","N","N","L",
"N","N","N","N","N","N","N","N","N","N","N","N","L",
"N","N","N","N","N","N","N","N","N","N","N","N","L","S"]
blockXY = []
for element in level:
if element == "N":
x += block_width
if element == "L":
y += block_height
x = 0
if element == "P":
drawBlock(block_width,block_height,x,y)
blockXY.append(x)
blockXY.append(y)
if appendBlockXY:
if len(collisionArray) > P_count:
del(collisionArray[P_count])
print(collisionArray)
appendBlockXY = False
collisionArray.append(blockXY)
blockXY = []
x += block_width
if element == "S":
y = 0
for XnY in collisionArray
if pX >= XnY[0] and pX <= XnY[0] + block_width or pX + playerSize >= XnY[0] and pX <= XnY[0] + block_width:
if pY - block_height == XnY[1]:
canMoveUp = False
y_change = 0
if pX >= XnY[0] and pX <= XnY[0] + block_width or pX + playerSize >= XnY[0] and pX <= XnY[0] + block_width:
if XnY[1] - playerSize == pY:
canMoveDown = False
y_change = 0
if pY >= XnY[1] and pY <= XnY[1] + block_height or pY + playerSize >= XnY[1] and pY + playerSize <= XnY[1] + block_height:
if pX - block_width == XnY[0]:
canMoveLeft = False
y_change = 0发布于 2016-01-02 12:29:37
我让它起作用了!对我来说,这是一个愚蠢的错误,而不是写y_change = 0,而应该是x_change =0。哦哦!
https://stackoverflow.com/questions/34556539
复制相似问题