0

ユーザーがジョイスティックの位置を選択できるようにしたい。つまり、ユーザーが 1 つの場所に触れると、ジョイスティックがそこに表示され、使用できる状態になり、指を離すと削除されます。

-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    if ([self getChildByTag:kTagJoyStick] == nil) {
        [self addJoystickWithPosition:[Helper locationFromTouches:touches]];
    }

}


-(void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {

    if ([self getChildByTag:kTagJoyStick] != nil) {
        [self removeChildByTag:kTagJoyStick cleanup:YES];
    }

}
-(void) ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
    [self ccTouchesEnded:touches withEvent:event];
}

(ccTouchesMoved メソッドでは何もしません)

ジョイスティックの更新方法は次のとおりです。

-(void) sneakyUpdate {

    if ([self getChildByTag:kTagJoyStick] != nil) {
        if (joystick.velocity.x < 0) {
            [self controlLeft];
        }
        else if (joystick.velocity.x > 0) {
            [self controlRight];
        }
        else {
            [self controlStop];
        }

    }
    else {
        [self controlStop];
    }

}

しかし、その結果、ジョイスティックが表示され、自動削除されます。しかし、私のスプライトは動きません。(ブレークポイントを設定すると、sneakyUpdate メソッドが呼び出されました。しかし、joystick.velocity は常に 0 です。(そして、thumbSprite は指に追従しませんでした。助けてください。

更新:そして、2本の指を使用する必要があることがわかりました(1回タッチしてジョイスティックを表示させ、指を離してから、別の指を使用してジョイスティックを制御します)

4

2 に答える 2

0

100%確信はありませんが、sneakyJoystickクラスはccTouchBegan / Moved / Ended / Cancelledを使用するため、ccTouchesBeganの代わりにccTouchBeganを使用する必要があると思います。また、ワンタッチのためにあります、それはあなたが望むものです。
私はそれがうまくいくことを願っています!

于 2012-01-29T15:45:04.787 に答える
0

問題はジョイスティック クラスにあるようです。私が見たすべてのジョイスティックの実装は、ccTouchesBegan メソッドを使用してジョイスティックをアクティブにし、次に ccTouchesMoved メソッドで、それを使用する前にそのアクティブ化を確認します。私が見ている問題は、タッチが開始された後にジョイスティックを作成して追加することです。これは、ジョイスティックが「アクティブ」にならないことを意味します。これをバイパスする 1 つの方法は、ジョイスティックを作成するメソッドでジョイスティックのすべての ccTouchesBegan 関数を実行し、それを使用するタッチへの参照を渡すことによってそこから「アクティブ化」することです。

于 2012-02-04T00:26:57.703 に答える