我正在写一个MMORPG游戏,我在服务器上遇到了玩家移动的问题。我有一个0.5 x 0.5米单元的2D矩阵,作为玩家的感应图。下面描述了我遇到的问题。如果玩家沿着对角墙或栅栏移动(并且非常接近),他就会被块状地图的几何形状所阻挡。如果栅栏/墙与世界对齐(垂直或水平),则不会发生这种情况。一个显而易见的解决方案是增加玩家的半径,这样他就不能离栅栏太近了,或者可能使单元更小(这将真正完成相同的事情)。但是,有没有人能想到另一种方法?我不能简单地说“嘿,这是对角线,所以我会从一个角到另一个角画一条假想线,并确保玩家不会越过这条线”。这是行不通的,因为正如你在下面看到的,栅栏跑可能会有一些水平或垂直的重复。有什么想法吗?提前感谢!

发布于 2018-12-10 01:26:11
大家都去哪了?我刚才通过下面的操作自己解决了这个问题。
如果角色的移动被阻止,服务器将首先尝试:
如果增量X不是0,则尝试对增量X使用0进行相同的移动。
如果这被阻止,将增量X放回去,并尝试将增量Y设为0,然后重试。
如果这也被阻止了,那么移动就被阻止了。
这将允许沿对角线栅栏滑动。如果栅栏是X或Y对齐的,显然这个组件方法不起作用,但在这种情况下不需要它,因为几何体不会阻挡你。我还没有检查它对另一个观察者(另一个登录的角色)是什么样子。对于另一个玩家来说,当他擦过栅栏或墙壁时,当他的X或Y移动保持为零时,它可能看起来非常参差不齐和跳跃。不过,这现在可以用了!
https://stackoverflow.com/questions/53684207
复制相似问题