2014-02-25 4 views
0

내 게임을 Cocos2d v2에서 v3으로 이식합니다. 스프라이트가 화면 밖으로 나올 때가 언제인지 알 수 없습니다. Cocos2d 3.0 중력을 지닌 다람쥐 : 스프라이트 위치가 변경되지 않습니다.

는 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

physicsNode.position은 글로벌 좌표 공간이 아닌 상위 스프라이트 좌표 공간을 사용하므로 시간이 지남에 따라 변경되지 않습니다.

당신이 사용하여 고정 점을 고려, 모든 노드의 글로벌 위치를 얻을 수 있습니다 : 필요한 경우 쉽게 (어쩌면, 수준 등) 다른 노드 공간으로 변환 할 수 있습니다 그 후

CGPoint worldPos = [node convertToWorldSpaceAR:CGPointZero]; 

CGPoint position = [_levelNode convertToNodeSpaceAR:worldPos]; 

을하지만 각 장치에 따라 다릅니다 당신이 , 코드에 화면 크기를 하드 코딩하지해야한다고주의 : 사용. 대신 다음을 사용할 수 있습니다.

CGSize viewSize = [[CCDirector sharedDirector] viewSize]; 
관련 문제