我一直在努力寻找基本的东西。我想不出有效的数学方法来看待这个问题。我使用的语言是Objective-C,但我几乎可以转换任何语言答案,因为它基本上只是数学。
我有两个正方形,一个是玩家,是一个障碍。玩家可以移动,障碍不能。 最终目标是告诉碰撞时它来自哪一方。例如,当我向下移动时,它会检测到我撞到了障碍物的顶部。
以下是我所知道的:
我会提供尽可能多的信息,但我需要的只是一般方法。似乎有很多方法可以解决这个问题,但每个人都有缺陷:/
我并不是真的要求代码,虽然这样很好,我只需要一个概念来开始工作。
答案 0 :(得分:1)
计算障碍物矩形中心的哪一侧是碰撞前玩家矩形的中心。中心是矩形中最大和最小点的平均值。 这可以使用两个中心的x和y坐标的差异来完成。 记得拿下小于l1 / 2 + l2 / 2之和的坐标。 结论: -
(x1,y1) = center of obstacle
(x2,y2) = center of player
dx = y1-y2
dy = x1-x2
l1 & l2 are length of side aligned in that direction
dx<0 && abs(dx)>(l1/2+l2/2) = left of obstacle
dx>0 && abs(dx)>(l1/2+l2/2) = right of obstacle
dy<0 && abs(dy)>(l1/2+l2/2) = below
dy>0 && abs(dy)>(l1/2+l2/2) = above