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;
}