我试图检测玩家是否撞到了挡块,如果是,当然要阻止他们(例如,如果它撞到了左边的墙,它就不能向左移动)。所以它工作得很好,我已经做了上下的碰撞,但是由于某种原因,当我继续做左侧的碰撞(最后一个if语句)时,玩家可以通过这个块移动,我不知道为什么,因为if语句基本上是一样的。你知道吗
仅供参考:pX是玩家的x坐标, pY是玩家的y坐标, XnY[1]是块的y坐标, XnY[0]是块的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
我成功了!我犯了一个愚蠢的错误,不是写y\u change=0,而是写x\u change=0。噢!你知道吗
相关问题 更多 >
编程相关推荐