2012-08-27 4 views
0

스프레이를 x 축의 증가 된 점으로 이동하려면 어떻게해야합니까? 더 높은 속도의 터치가 길어질수록 터치 포인트의 특정 범위에 도달하거나 사용자가 손가락을 뗀다가 다시 느려지 는가?스프라이트를 터치 된 포인트로 이동합니다. 증가하는 속도로 더 오랫동안 터치합니다.

플레이어 클래스 설정에는 업데이트 방법으로 업데이트되는 속도 값이 있습니다.하지만 터치 메서드에서 필요한 동작을 얻는 방법을 모르십니까?

건배,

답변

2

루이스이 야구장에서 당신을 얻어야한다 (인스턴스 변수를 추가하면뿐만 아니라 그 조각을 필요로하는 경우께요 알고, 초기화에있을 것입니다 만질 수) :

- (BOOL) ccTouchBegan: (UITouch *) touch 
      withEvent: (UIEvent *) event 
{ 
    _touchBeganAt = [self convertTouchToNodeSpace:touch]; 
    _velocityChangeSpeed = 1; 
} 


- (void) ccTouchEnded: (UITouch *) touch 
      withEvent: (UIEvent *) event 
{ 
    _velocityChangeSpeed = -1; 
} 

- (void) update:(ccTime)delta 
{ 
    velocityThreshold = 1; //? You can tune this 
    distanceThreshold = 1; //? Same 

    _sprite.velocity += _velocityChangeSpeed; 

    //So it comes to a complete stop, as opposed to moving backwards 
    if(_sprite.velocity < velocityThreshold) 
     _velocityChangeSpeed = 0; 

    float distanceFromTouchedPoint = ABS(_sprite.position.x - _touchBeganAt.x); 
    if(distanceFromTouchedPoint < distanceThreshold) 
     _velocity = 0; 
} 
관련 문제