1

我目前正在 html5 画布中制作一个 jump 'n' 原型。语言实际上并不那么重要,我只需要对算法的提示。

先看这张图:http: //i.imgur.com/3CwBI.png

如您所见,我有两个相互碰撞的矩形(白色的是玩家,灰色的是静态障碍物)。

在预先计算下一帧时,如果即将发生碰撞,我需要修复玩家的位置。人脑可以清楚地看出,图像中的白色矩形将落在平台顶部(考虑线性运动)。但是如何告诉这个程序呢?

我正在使用 2d 向量移动播放器。

编辑:我已经可以检测到碰撞,我只需要知道方向,这样我就可以将玩家位置固定在障碍物的对应侧。

4

1 回答 1

1

对于播放器的每个角,在它现在的位置和下一帧的位置之间画一条线段。

在此处输入图像描述

对于这些线段中的每一个以及构成平台的每个线段,检查两条线段是否相交。

在此处输入图像描述

如果出现任何交叉点,那么玩家将在下一帧中与平台发生碰撞。

编辑:

90% 的情况下,红色线段仅与属于平台的单个线段发生碰撞。如果红色线段与平台左侧相撞,则玩家撞到墙壁;如果分段与平台顶部碰撞,则玩家降落在平台上。

在此处输入图像描述

一个极端情况是顶部和侧面都发生碰撞。

在此处输入图像描述

在这种情况下,为了确定哪个碰撞“真正”发生,您需要及时确定哪个碰撞最先发生。最早的交叉点是最接近较早玩家矩形的交叉点。在上图中,如果右上方的玩家是较早的玩家,那么最早的碰撞是与平台的顶部。

于 2012-08-21T19:00:10.013 回答