我在我的场景中有20个精灵,我安排了我的精灵,如下所示。
o o o o o o o
o o o . o o o
o o o o o o o
o - >我的球精灵 .-->我的空精灵
当我将第二行中的第二个精灵移动到空精灵时,我的第三个精灵想要移除并且应该在那里添加空白空间。 同样明智地我想将任何精灵移动到空位置(水平移动,垂直移动,对角线移动),中间精灵想要移除。 任何人都可以帮助我。谢谢你提前。
答案 0 :(得分: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;
}
}
}
在touchesEnded中,
if(!movingBall)
{
return;
}
movingBall = nil;