微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

2D线相交碰撞:最佳做法

如何解决2D线相交碰撞:最佳做法

我正在用C制作2D平台游戏。目前,我具有一个功能,该功能可以从玩家所要走的方向投射光线(直线)。我想用它来检查是否与一堵墙发生碰撞。我的函数可以取两条线,即播放器的方向向量和另一条线,并返回它们之间的交点。碰撞检测很有意义:给定玩家当前的方向和速度,计算到墙壁的距离以及下一帧中玩家的位置。如果下一帧的播放器位置的x或y值大于墙壁边缘的x或y值,则将播放器移动的距离比预期的短,以免他撞到墙壁或穿过墙壁。

这是墙,我遇到了麻烦。由于我的函数使用线条来查找下一个玩家位置,因此如何有效地创建墙的线条? 假设我的墙实体是一个简单的矩形。在一种情况下,玩家在墙的左边,向右走。彼此顶部有四个矩形,形成一个更大的墙。 插图:

Player to the right of 4 wall entities forming one large wall

在这种情况下,我正在测试与玩家的线/射线相交的线从最底部矩形的底部延伸到最顶部矩形的顶部,并将其放置在矩形的左侧,如下所示:

Red line's intersection with player's vector (line)

硬编码这些行是没有意义的。已经有一种算法或技术可以使用,它是否有名称?没有理由在这里重新发明轮子。

当然,与玩家碰撞的对象也可能是玩家左侧的地板,屋顶或墙壁。因此,我需要创建一个函数获取我的墙矩形,并计算图片中的红线应该在哪里,因此不必每次都对其进行硬编码。

最诚挚的问候

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。