gpt4 book ai didi

java - 如何对多面墙(迷宫)进行碰撞检测?

转载 作者:行者123 更新时间:2023-12-02 07:21:42 26 4
gpt4 key购买 nike

在我的游戏中,玩家在迷宫中导航。我不知道如何与墙壁进行正确的碰撞检测。停留在某个区域很容易进行碰撞检测:

if (x > rightWallX - playerWidth) x = rightWallX - playerWidth;
if (x < leftWallX) x = leftWallX;
//...

但是我该如何对许多墙进行碰撞检测呢?

我可以进行简单的碰撞检测而无需纠正(例如if(intersecting)return true;),但我无法正确纠正这一点。如果我只是存储旧的 xy 并重置它们,那么

  1. 该物体实际上从未接触过墙壁
  2. 如果物体可以上升但被右侧阻挡,它就不会上升,只是不会移动。

迷宫中的碰撞检测是如何完成的?

最佳答案

解决碰撞检测后,要修复碰撞,最简单的方法是将角色移动到距离角色所在位置最近的有效位置不适用于与其碰撞的物体。这假设没有惯性,但对于类似迷宫的游戏或自上而下的 map 爬行游戏来说已经足够了。

如果您想进一步简化计算,您可以限制自己检测更改 Actor 的 xy 坐标是否会更好。如果你的 Actor 有一个轴对齐的矩形碰撞盒,并且所有障碍物也是轴对齐的矩形(最简单的情况),那么这个假设确实是正确的。然而,在其他一些情况下,结果可能并不令人满意(潜在的伪影:滑动对角墙的速度提升 - 在大多数迷宫游戏中并非如此)。

请记住,可能会同时发生多次碰撞(推撞两堵墙)。如果 Actor 可以相交的两堵墙之间没有锐角(例如,如果所有障碍物都轴对齐且间隔足够),则依次修复每次碰撞就足够了 - 只是在第一次碰撞后不要停止。

关于java - 如何对多面墙(迷宫)进行碰撞检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14132645/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com