sto facendo un cannone per sparare oggetti. dietro al canone è attaccato lo stantuffo. lo stantuffo agisce per impostare velocità e angolo. canon ruota da 0 a 90 gradi e lo stantuffo si muove avanti e indietro per regolare la velocità. quando ruoto il canone con i tocchi, si è mosso bene. quando lo stantuffo viene tirato indietro con i tocchi spostati e ruota significa che lo stantuffo è vincolato all'esterno del canone.delimitando uno sprite in cocos2d
come controllare questo: -
mio codice per stantuffo e la rotazione del canone sul tocchi spostato. (Para3 è il canone, para6 è il mio stantuffo): -
CGPoint touchLocation = [self convertTouchToNodeSpace:touch];
CGPoint oldTouchLocation = [touch previousLocationInView:touch.view];
oldTouchLocation = [[CCDirector sharedDirector] convertToGL:oldTouchLocation];
oldTouchLocation = [self convertToNodeSpace:oldTouchLocation];
if (CGRectContainsPoint(CGRectMake(para6.position.x-para6.contentSize.width/2, para6.position.y-para6.contentSize.height/2, para6.contentSize.width, para6.contentSize.height), touchLocation) && (touchLocation.y-oldTouchLocation.y == 0))
{
CGPoint diff = ccpSub(touchLocation, oldTouchLocation);
CGPoint currentpos = [para6 position];
NSLog(@"%d",currentpos);
CGPoint destination = ccpAdd(currentpos, diff);
if (destination.x < 90 && destination.x >70)
{
[para6 setPosition:destination];
speed = (70 + (90-destination.x))*3.5 ;
}
}
if(CGRectIntersectsRect((CGRectMake(para6.position.x-para6.contentSize.width/8, (para6.position.y+30)-para6.contentSize.height/10, para6.contentSize.width, para6.contentSize.height/10)),(CGRectMake(para3.position.x-para3.contentSize.width/2, para3.position.y-para3.contentSize.height/2, para3.contentSize.width, para3.contentSize.height))))
{
[para3 runAction:[CCSequence actions:
[CCRotateTo actionWithDuration:rotateDuration angle:rotateDiff],
nil]];
CGFloat plungrot = (rotateDiff);
CCRotateTo *rot = [CCRotateTo actionWithDuration:rotateDuration angle:plungrot];
[para6 runAction:rot];
}
}
aggiunto come un bambino. ancora il suo limite lo sprite (lo stantuffo delimita il cannone) quando il tocco termina il metodo funzionerà correttamente. in tocchi spostati ancora si limita dopo aver aggiunto bambino. – Srinivas