In my case, I’m making a 2D game that camera always follow my character, but there will be scene limitations so I have to stop follow him when he is nearly beside scene borders. I also have to treat camera scale, so I have to decide whether to use CCFollow::actionWithTarget() or CCCamera.
In CCCamera.h it says:
Limitations:
- Some nodes, like CCParallaxNode, CCParticle uses world node coordinates, and they won't work properly if you move them (or any of their ancestors)
using the camera.
- It doesn't work on batched nodes like CCSprite objects when they are parented to a CCSpriteBatchNode object.
- It is recommended to use it ONLY if you are going to create 3D effects. For 2D effecs, use the action CCFollow or position/scale/rotate.
The last sentence is interesting, why ONLY use it in 3D effects? Seems CCCamera is not recommended by its producer. I know it’s a shortcut to treat camera movements, but I just don’t know why better not to use it in 2D games.
If you notice, the CCCamera.h file also says:
There’s a good write up in the OpenGL Redbook on how the camera works. My understanding is, the camera is meant to setup the initial orientation, then you move the world by updating the model matrix (which is what I’m guessing CCFollow does for you). There’s an answer here that may help if you still want to use the camera:
moving CCCamera