0

私はポンゲームをしていて、指を使ってパドルを動かしています。指が1本あればすべてスムーズに進みます。しかし、2人のプレーヤー、2つのパドルを制御したい場合、1つのパドルはうまく動きますが、もう1つのパドルは非常に遅く動きます。2番目のパドルが動き始めると、最初のパドルがフリーズします。両方の動きをスムーズで反応の良いものにするにはどうすればよいですか?

Directorでマルチタッチを有効にしています。

タッチのコードは次のとおりです。

- (void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *myTouch = [touches anyObject];
    CGPoint location = [myTouch locationInView:[myTouch view]];
    location = [[CCDirector sharedDirector] convertToGL:location];
    CGRect leftTouchZone = CGRectMake(0, 0, 50, 320);
    CGRect rightTouchZone = CGRectMake(430, 0, 50, 320);

    if (CGRectContainsPoint(leftTouchZone, location))
    {
        CGPoint tempLoc = location;
        tempLoc.x = paddle1.position.x;
        paddle1.position = tempLoc;
    }

    if (CGRectContainsPoint(rightTouchZone, location))
    {
        CGPoint tempLoc = location;
        tempLoc.x = paddle2.position.x;
        paddle2.position = tempLoc;
    }
4

1 に答える 1

1

オブジェクトをつかむだけでなく、すべてのタッチオブジェクトに目を通すべきではありませんか? 同時に 2 つのタッチを移動している場合、1 つだけがタッチ移動イベントを取得します。

- (void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    for (UITouch* myTouch in touches)
    {
        CGPoint location = [myTouch locationInView:[myTouch view]];
        location = [[CCDirector sharedDirector] convertToGL:location];
        CGRect leftTouchZone = CGRectMake(0, 0, 50, 320);
        CGRect rightTouchZone = CGRectMake(430, 0, 50, 320);

        if (CGRectContainsPoint(leftTouchZone, location))
        {
            CGPoint tempLoc = location;
            tempLoc.x = paddle1.position.x;
            paddle1.position = tempLoc;
        }

        if (CGRectContainsPoint(rightTouchZone, location))
        {
            CGPoint tempLoc = location;
            tempLoc.x = paddle2.position.x;
            paddle2.position = tempLoc;
        }
    }
于 2012-08-05T16:13:14.357 に答える