Android 与二维精灵对象的碰撞和涉及的数学
我是这个网站的新手,决定做一个报告,因为我在2D环境中难以理解碰撞的概念 我拥有的是一组自上而下的道路精灵,我正试图建立与它们碰撞的规则,这样如果玩家离开道路,他就可以结束游戏 到目前为止,我已经为直路制定了规则,您可以在这里看到:Android 与二维精灵对象的碰撞和涉及的数学,android,iphone,marmalade,Android,Iphone,Marmalade,我是这个网站的新手,决定做一个报告,因为我在2D环境中难以理解碰撞的概念 我拥有的是一组自上而下的道路精灵,我正试图建立与它们碰撞的规则,这样如果玩家离开道路,他就可以结束游戏 到目前为止,我已经为直路制定了规则,您可以在这里看到: if ((*it)->getType() == ST_RoadStraight) { Road* road = (Road*)*it; // Check to see if the road sprite is with
if ((*it)->getType() == ST_RoadStraight)
{
Road* road = (Road*)*it;
// Check to see if the road sprite is within 16 pixels of the bucket either way
int dx = road->getPosition().x - Pos.x;
if (dx < 0) dx = -dx;
if (dx > 200)
{
outOfBounds = true;
}
}
if((*it)->getType()==ST_RoadStraight)
{
路*路=(路*)*it;
//检查道路精灵是否在桶的16像素范围内
int dx=road->getPosition().x-Pos.x;
如果(dx<0)dx=-dx;
如果(dx>200)
{
边界外=真;
}
}
基本上,我说如果玩家在x轴上走了一定的距离,游戏就结束了。这对于一条上下或左右移动的直路来说很好,因为我可以将I改为y轴,但我也有弯曲的道路。以下是资产的大致情况:
直的:
弯曲的:
基本上,我需要球员能够在允许的情况下沿着道路或穿过道路,但如果他撞到了他将离开道路的边缘,我必须这么说。这在直道上很容易,但取决于玩家在弯道上的位置,比如说Y轴上的30像素高可能在道路的某一部分可以,但在另一部分不可以
从本质上说,我在寻找某种方程式,以便在我的游戏中准确地表示这一点
任何帮助都将不胜感激 有什么原因不能使用吗?对于二维碰撞检测,我建议您使用Box2D物理引擎。它很容易设置在果酱,并给出准确的结果。我在很多果酱游戏中都用过它。在中有一个box2D扩展。看看吧。我目前正在使用Marmalade SDK编写这个游戏,使其可用于iPhone和Android设备。我觉得这是针对xcode/objective-c编程的。但是,如果能提供我正在寻找的碰撞类型的套件,我将不胜感激,如果这对我仍然有用,我可能会研究一下。我觉得我也应该在Windows上的Visual Studio中提到这一点。SpriteKit是Box2D的一个端口,所以如果你能找到另一个与果酱一起工作的Box2D端口,那么它应该和sprite kit一样好。Cocos2D是Box2D的另一个端口,但我认为这也是iOS的唯一端口。您可以在这里访问Box2D网站:否则,您可以自己使用一些基本几何图形。使用毕达哥拉斯定理检查半圆部分的边,使用加法/减法检查直线部分。