matrix - 沿对角栅栏导航
问题描述
我正在编写 MMORPG 游戏,但在服务器上的玩家移动时遇到了问题。我有一个 0.5 x 0.5 米单元格的 2D 矩阵作为玩家的通行图。我遇到的问题如下所示。如果玩家沿着(并且非常靠近)对角墙或栅栏移动,他就会被块状地图的几何形状所阻挡。如果栅栏/墙与世界对齐(垂直或水平),则不会发生这种情况。显而易见的解决方案是增加玩家半径,这样他就不能靠近栅栏,或者可能使单元格更小(这确实可以完成同样的事情)。但是,谁能想到另一种方法?我不能简单地说“嘿,这是对角线,所以我会从一个角落到另一个角落画一条假想的线,并确保玩家不能越过那条线”。这是行不通的,因为正如您在下面看到的那样,栅栏跑可以在这里和那里有一些水平或垂直的重复。有任何想法吗?提前致谢!
解决方案
大家在哪里?我刚刚通过执行以下操作自行解决了这个问题。
如果角色的移动被阻止,服务器将首先尝试:
如果 delta X 尚未为 0,请尝试将 0 用于 delta X 的相同移动。
如果这被阻止,请将 delta X 放回去并尝试将 delta Y 设为 0,然后再试一次。
如果这也被阻止,则移动被阻止。
这将允许沿对角围栏滑动。如果栅栏是 X 或 Y 对齐的,显然这种组件方法不会发挥作用,但在这种情况下不需要它,因为几何图形不会阻挡你。我还没有检查过另一个观察者(另一个登录的角色)的样子。当他刷到栅栏或墙壁时,当他不断将他的 X 或 Y 运动归零时,它可能看起来非常锯齿和跳跃。这暂时有效!
推荐阅读
- python - 在 Docker 容器外运行 python 代码
- ruby-on-rails - Rails 查询其中至少 1 个关联记录包含属性
- html - 有没有办法获得一个超极简的网络 YouTube 播放器?
- python - 熊猫数据框指数衰减求和
- javascript - 我正在使用 react-native-photo-upload 库上传个人资料图片,但它抛出构建失败错误
- rxjs - 在 RxJS 中,map 不执行内部映射的 observable
- class - 类设计 - 面向对象的编程问题
- python-2.7 - 尝试使用 OOP 内部对象,遇到非常奇怪的错误
- python - django 2 博客上的 ckeditor
- amazon-web-services - AppMesh 政策不可用