2013-05-23 15 views
18

Sto sviluppando un gioco da tavolo utilizzando Ball, in cocos3d. In che ho dato un'azione in touchevent. Sto stampando la posizione sulla console usando NSLog().Posizione nodo mesh non aggiornata, in cocos3d

Ecco il codice

-(void) touchEvent: (uint) touchType at: (CGPoint) touchPoint {  

CCActionInterval *BounceAction1=[CC3MoveTo actionWithDuration:0.1 moveTo:cc3v(0.0, -5.0, -0.7)]; 

switch (touchType) { 

    case kCCTouchBegan: 

     [Ball runAction:BounceAction1]; 

     NSLog(@"Location of x=%f and y=%f", Ball.globalLocation.x, Ball.globalLocation.y); 

    break; 
} 

Qui, 'Ball' è un MeshNode. La sua posizione è all'origine cc3v(0.0, 0.0, 0.0).

Quando corro e tocco, trovo la pallina che si muove nella posizione specificata. Ma ho posizione della sfera come:

Location of x=0.000000 and y=0.000000 

Quando tocco di nuovo, trovo la palla non è in movimento (come si è già spostato nella posizione specificata). Ma poi mostra la posizione di Ball come:

Location of x=0.000000 and y=-6.000000 

Perché non riesco a trovare la posizione la prima volta?

+0

Perché, la posizione iniziale per la palla sarà (0, 0) – rptwsthi

+0

In realtà il mio problema è, dopo il movimento anche ottengo la posizione invariata, cioè ottenere la posizione di partenza. –

+0

Quindi devi toccare il sub nodo dello shader del tuo nodo – rptwsthi

risposta

1

In base al codice, penso che il problema sia che BounceAction1 viene eseguito con una durata di 0,1, pertanto la proprietà statica di Ball non è stata aggiornata quando viene eseguita l'istruzione NSLog. Per provare questo, prova a inserire una sospensione appena prima dell'istruzione NSLog.

Problemi correlati