if(getBounds().intersects(p.upGetBounds())){ p.walk = false;}else{ p.walk = true;}问题是此代码。您正在为每个不与播放器碰撞的图块重置标志,因此只有最后一个图块可以与播放器成功碰撞,并且不会重置标志。
即-假设有2个图块,并且
#1正在碰撞而
#2没有碰撞。
在循环的第一次迭代中-
#1正在碰撞=> p.walk = false;
在循环的第二次迭代中-
#2不冲突=> p.walk = true;
//value has been reset.
但是,如果
#2是一次冲突,则无法重置该标志。
要修复:删除
else条款和重置 一次 到
true之前 的
for循环。



