2011-01-13 12 views
6

jak przenieść obiekt w określonych lokalizacjach.jak przenieść obiekt w określonych lokalizacjach w cocos2d

na przykład. Mam jeden mały pasek (szerokość = 50, wysokość = 10). Muszę ręcznie przesunąć to jak tłok. chcę poruszać się tylko w x kordinacie (granice to x = 20 (punkt początkowy) do x = 50 (punkt końcowy)) bez ruchów na współrzędnych y. ale porusza się 50 do 10 po tym, jak nie ma ruchu. alt text kodowania: -

- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    if (isPlaying) { 
     UITouch *touch = [[event allTouches] anyObject]; 

     touchPosition = [touch locationInView:touch.view]; 
     if (CGRectContainsPoint(para3.boundingBox,touchPoint) 
       isDragging = YES; 

     touchOffset = para3.position.y - touchPosition.y; 

    } 
- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
if (isPlaying) { 
UITouch *touch3 = [[event allTouches] anyObject]; 
     float distanceMoved = 
     ([touch3 locationInView:touch3.view].y + touchOffset) - 
     para3.position.y; 
     float newY = para3.position.y + distanceMoved; 
     if (newY > 67 && newY < 99) 
      para3.position = CGPointMake(newY , para3.position.y ); 
     //para3.contentSize/2 
     if (newY >67) 
      para3.position = CGPointMake(67, para3.position.y); 
     if (newY < 99) 
      para3.position = CGPointMake(99, para3.position.y); 
    } 
} 
+0

Musisz szukać różnych układów współrzędnych Cocos i UIView. Więc musisz przekonwertować punkt z locationInView. Nie pamiętam dokładnie. Ale CCDirector jest klasą, która implementuje te metody. ;-) Mam nadzieję, że to pomogło. –

+1

para3.position = cpp (x, y); Musisz użyć cpp (x, y); zamiast CGPointMake (x, y); używając cocos2d – 0xDE4E15B

+0

moja wina, ccp (x, y); – 0xDE4E15B

Odpowiedz

2

Mam nadzieję, że rozumie problem doskonale. To, co zrobiłbym w takim scenariuszu, to włączenie do mojej gry Chipmunk framework, a następnie uczynienie mojego Plungera i armaty jako obiektów Fizyki. Po wykonaniu tej czynności prędkość i kierunek (tj. Kąt pocisku) można kontrolować za pomocą metod "ApplyImpulse" w ramach. Prędkość i kąt byłby kontrolowany przez Fizyki sam raz chciałbym zapewnić początkowe wartości ....