gpt4 book ai didi

java - 怎样才能正确地移动到对角线碰撞盒中并进行对角线移动?

转载 作者:行者123 更新时间:2023-12-01 10:09:22 26 4
gpt4 key购买 nike

首先,对长标题表示歉意;我想不出一种方法来充分解决我的问题,同时又进一步压缩它。

我正在用 Java 创建一个 2D 游戏,角色位于屏幕中央。我的角色有一个碰撞盒,并且我在 map 上有图像(从上面看),这些图像也有碰撞盒。但是,如果碰撞发生在不垂直于我的方向的一侧,我希望能够出现“滑动”情况。

例如,如果我的角色正在向东移动,并且他的东边有一堵墙,从西南到东北方向移动,而不是仅仅注意到东边有一个物体并且没有移动,我希望我的角色角色能够沿着墙壁“滑动”,向东北移动以实现尝试向东移动。

有什么简单的方法可以做到这一点吗?

如果有任何帮助的话,我正在使用Java Slick2D,并将角色的碰撞框作为他站立的矩形,并将其他对象的碰撞框作为多边形。

预先感谢您的回复!

最佳答案

当您解决了识别何时发生碰撞的问题后,可以通过计算垂直于墙壁的运动分量并从运动 vector 中减去该分量来实现滑动运动。假设您有一个运动 vector v = (v_x, v_y) 和墙壁的法线 n = (n_x,n_y)。法 vector 的长度应为 1。那么你的新运动 vector 应该是v_new = v - (v * n) * n。X 和 Y 分别为v_new_x = v_x - (v_x * n_x + v_y * n_y) * n_y,Y 也是如此

关于java - 怎样才能正确地移动到对角线碰撞盒中并进行对角线移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36232613/

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