我制作了一个简单的游戏,您可以在点击大平面(地面)时在raycaster(鼠标)位置添加对象(立方体)。我不希望对象(立方体)可以放在彼此中。我做了一个简单的碰撞检测。我知道这不是最好的方法,但这是我理解我正在做的事情。我是初学者。
在下面的代码中,我检查两个对象的位置。通过这些位置,我检查它之间的距离。如果距离小于4098(即64 * 64),则将对象添加到场景中。
{{1}}
问题是这只有在它是方形物体时才有效。任何人都可以帮助我如何以一种像{{1}}这样的矩形对象的方式思考?感谢
答案 0 :(得分:1)
我前段时间写过一篇来自C64的蛙人游戏的翻版。在那里我必须控制我的青蛙与汽车没有接触。
var img1_x1 = parseInt(idImg.style.left);
var img1_x2 = img1_x1 + idImg.width - 1;
var img1_y1 = parseInt(idImg.style.top);
var img1_y2 = img1_y1 + idImg.height - 1;
img2_x1 = parseInt(idImg2.style.left);
img2_x2 = img2_x1 + idImg2.width - 1;
img2_y1 = parseInt(idImg2.style.top);
img2_y2 = img2_y1 + idImg2.height - 1;
if (((img2_x1 <= img1_x2 && img1_x2 <= img2_x2) || (img2_x1 <= img1_x1 && img1_x1 <= img2_x2) || (img1_x1 <= img2_x1 && img2_x1 <= img1_x2))
&& ((img2_y1 <= img1_y2 && img1_y2 <= img2_y2) || (img2_y1 <= img1_y1 && img1_y1 <= img2_y2) || (img1_y1 <= img2_y1 && img2_y1 <= img1_y2)))
{
alert('boom');
}
看看我的代码,或许有一些对你有用的东西。我首先计算我的青蛙(img1)的位置,然后在我的所有测试对象上使用for循环(这里没有显示)。在这个循环中,我计算了对象的位置(img2),之后我控制了重叠
你必须将第三个维度添加到我不需要的条件中。
注意:对于img2我不在我的for-loop中使用var我在函数外面声明它。
我在这里只复制了我的代码中的几个部分,并切断了令人困惑的部分。