将我的游戏从Cocos2d v2移植到v3我不知道精灵何时离开屏幕。
在v2中我的解决方案是:
-(void) update:(ccTime) delta
{
// Should use a fixed size step based on the animation interval.
int steps = 2;
CGFloat dt = [[CCDirector sharedDirector] animationInterval]/(CGFloat)steps;
for(int i=0; i<steps; i++){
cpSpaceStep(space_, dt);
}
if (mySprite.getPhysicsBody->p.y > 500)
[mySprite resetPosition];
}
现在使用Cocos2d v3 mySprite.physicsNode.position不会随着时间的推移而改变。
有任何想法或链接的例子吗?
感谢。
答案 0 :(得分:0)
physicsNode.position
不随时间变化,因为它使用其父精灵坐标空间,而不是全局坐标空间。
考虑到Anchor Point,您可以使用以下方法获取任何节点的全局位置:
CGPoint worldPos = [node convertToWorldSpaceAR:CGPointZero];
之后,您可以根据需要轻松地将其转换为任何其他节点空间(例如您的级别):
CGPoint position = [_levelNode convertToNodeSpaceAR:worldPos];
但请注意,不应对代码的屏幕大小进行硬编码,因为每个设备的屏幕尺寸都不同。您可以改为使用:
CGSize viewSize = [[CCDirector sharedDirector] viewSize];