In my cocos2d app I have a CCSprite moving on the screen but it moves off the screen. How can I prevent the CCSprite from moving off the screen?


  • \$\begingroup\$ You didn't provide enough information. CCSprites don't magically move off the screen. Are you using Actions? Do you change anything in your update method or do you use a physics-engine? \$\endgroup\$ – bummzack Jul 5 '12 at 22:11
  • \$\begingroup\$ @bummzack In the app the CCSprite is being moved by the accelerometer \$\endgroup\$ – Coder404 Jul 6 '12 at 0:34

You have to make sure your sprite-rectangle is always within the screen bounds. You can ensure this by clamping the x, and y position of the sprite within the screen bounds.

Something like this (this is assuming the anchor point of the sprite is at its center, which is the default):

// move sprite using accelerometer

// get screen size
CGSize screen = [[CCDirector sharedDirector] winSize];

// get sprite size
CGSize size = sprite.contentSize;

// get sprite position
CGPoint pos = sprite.position;

// set new position constrained to screen bounds
sprite.position = ccp(
    clampf(pos.x, size.width * 0.5f, screen.width - size.width * 0.5f),
    clampf(pos.y, size.height * 0.5f, screen.height - size.height * 0.5f)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.