我在游戏中遇到一些碰撞问题,但是我不想再看一次即将完成的游戏的每次物理碰撞,它实际上是可玩的,问题是,有一种推动力角色穿过墙的一点,然后,如果受到足够的打击,将无法移动,我考虑过做
if (position + this power).intersects(wall)
Don't apply power;
但是我认为我在那儿做错了什么,无法纠正它,然后,我尝试了不同的方法:
if(char.intersects(wall)) //It will do only if the character is inside the wall
{
if(char.y < wall.y) //If the character is below the wall's top
char.y++; //It will go up
else if(char.y > wall.y - wall.height)//If the character is above the bottom of the wall
char.y--; // it will go down
}
如您所见,问题是:它们是自反的,如果其中一个是对的,那么另一个也总是对的,我不认为我需要做些什么来解决这个问题
如果它在墙顶下方,则肯定在墙底上方
如果它在墙底之上,那肯定是在墙底之下
然后,这将产生一个问题,它将始终执行这两个函数,并尝试通过else来解决问题,但是问题是当用++偏移字符并且-不够时,然后角色会卡在墙上,有人可以告诉我我的逻辑失败吗?