У меня проблема с Cocos2D. Я пытаюсь сделать спрайт подвижным на экране (что я смог сделать), но не позволяю ему обрезаться по краю экрана.
Если я прав, спрайты импортируются в слой в виде прямоугольников (spriteWithFile: @ "filename.ext" rect: CGRectMake (0, 0, X, Y);).
Единственное, что мне удалось выяснить, - это настроить мой код так, чтобы он определял, вышел ли прямоугольник спрайта за пределы "фонового" слоя, и соответствующим образом отрегулируйте его, если это так.
Это то, что у меня пока есть, но, похоже, оно работает неправильно:
- (void)panForTranslation:(CGPoint)translation {
CGSize winSize = [CCDirector sharedDirector].winSize;
float maxX = winSize.width - selSprite.contentSize.width/2;
float minX = selSprite.contentSize.width/2;
float maxY = winSize.height - selSprite.contentSize.height/2;
float minY = selSprite.contentSize.height/2;
if (selSprite.position.x > maxX)
{
selSprite.position = ccp(maxX, selSprite.position.y);
}
else if (selSprite.position.x < minX)
{
selSprite.position = ccp(minX, selSprite.position.y);
}
if (selSprite.position.y > maxY)
{
selSprite.position = ccp(selSprite.position.x, maxY);
}
else if (selSprite.position.y < minY)
{
selSprite.position = ccp(selSprite.position.x, minY);
}
CGPoint newPos = ccpAdd(selSprite.position, translation);
selSprite.position = newPos;
}
Есть ли что-то совершенно очевидное, чего мне не хватает? Мои спрайты продолжают уходить за пределы экрана, если я их перетаскиваю, и я не могу понять это ради своей жизни.