2011-08-26 6 views
0

iOS 용 Cocos2d 라이브러리를 사용하여 게임을 작성 중입니다. 지금까지 나는 화면 상에 드래그하고 싶은 스프라이트를 가지고 있습니다. 기본적으로 나는 CGPoint를 End라고 부른다. 화면을 가로 질러 끌면 움직입니다. 끝이 움직 였는지, 그리고 주어진 속도로 움직이기 시작했는지, 그리고 그 위에 멈추는지를 스프라이트로 각 프레임에 나타 내고 싶습니다. 끝은 앵커와 같습니다.CCSprite가 특정 시점에 도달했을 때 어떻게 감지합니까?

-(void) update:(ccTime)deltaTime 
{ 
    CGPoint Pos = _player.position; 
    velocity = 15; 

    diff.x = End.x - _player.position.x; 
    diff.y = End.y - _player.position.y; 
    length = ccpLength(diff); 

    norm.x = diff.x/length * velocity; 
    norm.y = diff.y/length * velocity; 

    Pos.x += norm.x; 
    Pos.y += norm.y; 
} 

내가 같이 주변의 끝 지점을 이동 : :이 같은 벡터를 플롯에 의해 처음 두 단계를 수행 한

- (void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event 
{ 
CGPoint touchLocation = [self convertTouchToNodeSpace:touch]; 

CGPoint oldTouchLocation = [touch previousLocationInView:touch.view]; 
oldTouchLocation = [[CCDirector sharedDirector sharedDirector] convertToGL:oldTouchLocation]; 
oldTouchLocation = [self convertToNodespace:oldTouchLocation]; 

CGPoint diff = ccpSub(touchLocation, oldTouchLocation); 

End = ccpAdd(End, diff); 
} 

무엇 _player에 도달 할 때 감지하는 가장 좋은 방법은 목적지 야? 나는 이것을 여러 가지 방법으로 시도해 봤지만, 충분히 정확하지는 않습니다. 나는 각 이동의 시간을 곱한 타이머를 추가하려고 시도 했으므로, 속도 * 지속 시간> = 길이가인지 테스트 할 수있었습니다. 그렇게 할 수있는 방법입니까? 그것은 너무 잘 풀리지 않았다. 모든 마스터 프로그래머가 나에게 몇 가지 팁을주고 싶습니까?

답변

1

업데이트 방법이 끝나면 거리를 확인하십시오. 거리가 빠르면 끝났습니다. 끝점으로 위치를 설정하고 원하는 방법을 실행합니다. cocos2d에서는 ccpDistance 메소드를 사용할 수 있습니다.

관련 문제