1

スプライトをタッチで動かそうとしていますが、タッチすると消えて、2回目のタッチで再び現れるようです。これを修正してスプライトをタップした方向に移動させる方法がわかりません。私はしばらくこれを理解しようとしてきましたが、運が悪いようです。誰かが私を正しい方向に向けてくれることを願っています。

      CGSize winSize = [[CCDirector sharedDirector] winSize];
     player = [CCSprite spriteWithFile:@"Player.png" 
                                       rect:CGRectMake(0, 0, 27, 40)];
     player.position = ccp(player.contentSize.width/2, winSize.height/2);
    [self addChild:player z:1]; 










          (void) registerWithTouchDispatcher
        {
          [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self 
                                             priority:0 swallowsTouches:YES];
    }

        -(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
         {
        return YES;

     -(void)setPlayerPosition:(CGPoint)position {
      player.position = position;
    }

     -(void) ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event
     {

   CGPoint touchLocation = [touch locationInView: [touch view]];       
    touchLocation = [[CCDirector sharedDirector] convertToGL: touchLocation];
    touchLocation = [self convertToNodeSpace:touchLocation];

    CGPoint playerPos = player.position;
     CGPoint diff = ccpSub(touchLocation, playerPos);
     if (abs(diff.x) > abs(diff.y)) {
         if (diff.x > 0) {
    playerPos.x += contentSize_.width;
} else {
    playerPos.x -= contentSize_.width; 
}    
   } else {
if (diff.y > 0) {
      playerPos.y += contentSize_.height;
} else {
    playerPos.y -= contentSize_.height;
}
    }
4

1 に答える 1

0

タッチ機能の構文が違うようです。

代わりにこのコードを試してください

- (void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    CGPoint touchLocation = [touch locationInView: [touch view]];       
    touchLocation = [[CCDirector sharedDirector] convertToGL: touchLocation];

    CGPoint playerPos = player.position;

}
于 2012-06-18T04:10:44.643 に答える