0

我的场景中有 20 个精灵,我的精灵如下所示。

       o    o    o   o   o    o    o

       o    o    o   .   o    o    o 

       o    o    o   o   o    o    o

o-->我的球精灵。-->我的空精灵

当我将第二行中的第二个精灵移动到空精灵时,我的第三个精灵想要删除并且应该在那里添加空白空间。明智地我想将任何精灵移动到空位置(水平移动,垂直移动,对角线移动)中间的精灵想要移除。任何人都可以帮助我。在此先感谢。

4

1 回答 1

0

试试这个,

在 .h 中声明一个全局精灵变量,

CCSprite *movingBall;

在 .m 中,在 init 中,

movingBall = nil;

touchesBegan,

if(!movingBall)
{
  for(int i = 0; i<20; i++)
  {
     CCSprite *currentSprite = (CCSprite *)[self getChildByTag:i+tagOffset];

     if(CGRectIntersectsPoint([currentSprite boundingBox],touchPoint))   
     {
        // get moving sprite touched

        if(movingBall.position.x == emptySprite.position.x+(2*xDistance) || movingBall.position.x == emptySprite.position.x-(2*xDistance) || movingBall.position.y == emptySprite.position.y+(2*yDistance) || movingBall.position.y == emptySprite.position.y -(2*yDistance))
        {
          movingBall = (CCSPrite *)currentSprite;
          Break;
        }
     }
  }
}

在touchesMoved中,

if(!movingBall)
{
  return;
}


movingBall.position = touchedPoint;

for(int i = 0; i<20; i++)
{
   CCSprite *currentSprite = (CCSprite *)[self getChildByTag:i+tagOffset];

   if(CGRectIntersectsRect([movingBall boundingBox],[currentSprite boundingBox]))   
   {
      // current sprite touched
      if(currentSprite.tag == emptySprite.tag)
      {
        movingBall.position = emptySprite.position;

        [self removeChild:currentSprite];
        Break;
      }

   }
}

在接触结束时,

  if(!movingBall)
  {
    return;
  }

  movingBall = nil;
于 2013-01-31T05:29:18.613 回答