Ho una pallina e la voglio semplicemente spostare col touchscreen.
Ho creato questo codice, ma non funziona molto bene e non so perchè -_-
Ve lo posto e infondo metto le osservazioni e gli errori:
// Import the interfaces
#import "HelloWorldScene.h"
#define RAGGIO 50
@implementation HelloWorld
enum{
kTagBall
};
+ (id)scene {
CCScene *scene = [CCScene node];
HelloWorld *layer = [HelloWorld node];
[scene addChild:layer];
return scene;
}
- (id)init {
if ((self=[super init])) {
self.isTouchEnabled = YES;
CGSize winSize = [CCDirector sharedDirector].winSize;
// Creiamo una sprite e la aggiungiamo
ball = [CCSprite spriteWithFile:@"Ball.png" rect:CGRectMake(0, 0, 52, 52)];
ball.position = ccp(100, 100);
[self addChild:ball z:2 tag:kTagBall];
}
return self;
}
-(BOOL) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { // riconosce che il dito si sta muovendo sullo schermo
UITouch * touch = [touches anyObject];
CGPoint pos = [touch locationInView: [UIApplication sharedApplication].keyWindow];
NSLog(@"Position of touch: %.3f, %.3f, Position of ball: %.3f, %.3f", pos.x, pos.y, ball.position.x, ball.position.y);
if(abs(pos.x - ball.position.x)<RAGGIO && abs(pos.y - ball.position.y)<RAGGIO){ // se sto cliccando dentro la pallina allora muovila, sennò no
ball.position=ccp(pos.x,pos.y);
}
return YES;
}
- (void)dealloc {
delete _world;
_body = NULL;
_world = NULL;
[super dealloc];
}
@end
Lavoro con l’iphone rovesciato.
Il problema è che nel metodo del touchscreen se metto
ball.position=ccp(pos.x,pos.y);
l’animazione funziona perfettamente, con l’unico problema che la pallina avrà gli assi rovesciati!! (muovo il mouse sull’asse x e la pallina invece si muove sull’asse y).
Se inverto mettendo pos.y,pos.x l’animazione mentre trascino diventa tutta a scatti e in certi punti si blocca e non capisco perchè.
Io ho pensato che può essere magari un problma di coordinate visto che sto lavorando con l’iphone rovesciato, o magari no boh…
Delucidatemi