Ios4 如何在box2d中找到形状内部的触摸位置?
有谁能帮我吗 我已经在我的项目中创建了边缘。我知道如何检查形状内部的触摸位置Ios4 如何在box2d中找到形状内部的触摸位置?,ios4,cocos2d-iphone,box2d,Ios4,Cocos2d Iphone,Box2d,有谁能帮我吗 我已经在我的项目中创建了边缘。我知道如何检查形状内部的触摸位置 if (fix->TestPoint(locationWorld)) { CCLOG(@"****touch inside shape***"); } 但我想创建六边形,我需要球创建内部六边形,然后移动到内部六边形 我使用以下代码在六边形内移动球: b2BodyDef地面BodyDef; 地面车身定义位置设置(0,0); b2Body*groundBody=world->Crea
if (fix->TestPoint(locationWorld))
{
CCLOG(@"****touch inside shape***");
}
但我想创建六边形,我需要球创建内部六边形,然后移动到内部六边形
我使用以下代码在六边形内移动球:
b2BodyDef地面BodyDef;
地面车身定义位置设置(0,0);
b2Body*groundBody=world->CreateBody(&groundBodyDef)
int countVal=[pos count];
//定义接地盒形状。
b2PolygonShape接地盒;
整数范围=[pos计数]-2;
CCLOG(@“countVal=%d,range=%d”,countVal,range);
对于(int i=0;iCreateFixture(&groundBox,0);
}
但我不知道如何找到多边形形状内的触摸位置。我使用cocos2d和box2d
请任何人帮我最后我得到了答案:
我正在检查该点是否在多边形内:
int pnpoly(int npol, float *xp, float *yp, float x, float y)
{
int i, j, c = 0;
for (i = 0, j = npol-1; i < npol; j = i++)
{
if ((((yp[i] <= y) && (y < yp[j])) ||
((yp[j] <= y) && (y < yp[i]))) &&
(x < (xp[j] - xp[i]) * (y - yp[i]) / (yp[j] - yp[i]) + xp[i]))
c = !c;
}
return c;
}
intpnpoly(intnpol,float*xp,float*yp,float x,float y)
{
int i,j,c=0;
对于(i=0,j=npol-1;i 如果box2d世界是无头的,它没有自己的界面,也没有“触摸位置”的概念。正是执行的CCScene
具有这些功能,因此您需要添加代码以确定用户是否/何时/何地触摸您的CCScene
,然后添加额外的代码以在CCScene
中的某个位置和box2d世界中的某个位置之间进行插值。然后,您可以查看插值的位置是否在您的身体内部r box2d形状。天哪!这个函数要求坐标数组是顺时针方向还是逆时针方向?(如果我在大学课堂上没有记错的话,坐标的方向对这种几何算法很重要)它要求逆时针方向。
int pnpoly(int npol, float *xp, float *yp, float x, float y)
{
int i, j, c = 0;
for (i = 0, j = npol-1; i < npol; j = i++)
{
if ((((yp[i] <= y) && (y < yp[j])) ||
((yp[j] <= y) && (y < yp[i]))) &&
(x < (xp[j] - xp[i]) * (y - yp[i]) / (yp[j] - yp[i]) + xp[i]))
c = !c;
}
return c;
}