在我的情况下,我正在制作2D游戏,相机总是跟随我的角色,但会有场景限制所以当他几乎在场景边界旁边时我不得不停止跟随他。我还必须处理相机比例,所以我必须决定是否使用CCFollow :: actionWithTarget()或CCCamera。
在CCCamera.h中它说:
限制:
- 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.
最后一句很有意思,为什么只在3D效果中使用它?似乎CCCamera不是由其制作人推荐的。我知道这是处理相机移动的捷径,但我不知道为什么最好不要在2D游戏中使用它。
答案 0 :(得分:2)
如果您注意到,CCCamera.h文件也说:
Useful to look at the object from different views.
The OpenGL gluLookAt() function is used to locate the
camera.
在OpenGL红皮书中有关于相机如何工作的好文章。我的理解是,摄像机用于设置初始方向,然后通过更新模型矩阵来移动世界(这就是我猜测CCFollow为您做的事情)。如果您仍想使用相机,这里有一个答案可能会有所帮助: