0

スプライトを上下に動かそうとしています。これが私のコードです。問題がわかりません。コンテンツのサイズがめちゃくちゃになっている可能性があります。スプライトは消え続けます。

    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;
            }
        }

        if (playerPos.x <= (contentSize_.width *contentSize_.width) &&
            playerPos.y <= (contentSize_.height * contentSize_.height) &&
            playerPos.y >= 0 &&
            playerPos.x >= 0 ) 
        {
            [self setPlayerPosition:playerPos];
        }
    }
4

0 に答える 0