1

SpriteKit に仮想ジョイスティックを使用していますが、うまく機能します。JCInputバージョンまたはSpriteKit-Joystickバージョンを試しました。どちらもムーブメントに使用し、左側に使用しました。

とにかく、ドキュメントはgitHubで非常に優れていますが、これは私が使用したコードです:

JCInput バージョンの場合:

    self.joystick = [[JCJoystick alloc] initWithControlRadius:40 baseRadius:45 baseColor:[SKColor blueColor] joystickRadius:25 joystickColor:[SKColor redColor]];
    [self.joystick setPosition:CGPointMake(70,70)];
    [self addChild:self.joystick];

そして更新機能:

-(void)update:(CFTimeInterval)currentTime {

    [self.myLabel1 setPosition:CGPointMake(self.myLabel1.position.x+self.joystick.x, self.myLabel1.position.y+self.joystick.y)];

    [self.myLabel2 setPosition:CGPointMake(self.myLabel2.position.x+self.imageJoystick.x, self.myLabel2.position.y+self.imageJoystick.y)];

/* Called before each frame is rendered */

}

SpriteKit-Joystick バージョンの場合:

    SKSpriteNode *jsThumb = [SKSpriteNode spriteNodeWithImageNamed:@"joystick"];
    [jsThumb setScale:0.5f];
    SKSpriteNode *jsBackdrop = [SKSpriteNode spriteNodeWithImageNamed:@"dpad"];
    [jsBackdrop setScale:0.5f];
    self.joystick = [Joystick joystickWithThumb:jsThumb andBackdrop:jsBackdrop];
    self.joystick.position = CGPointMake(50,50);
    [self addChild:self.joystick];
    //I've already declared it in the header file
    velocityTick = [CADisplayLink displayLinkWithTarget:self selector:@selector(joystickMovement)];
    [velocityTick addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];

そして更新機能:

-(void)joystickMovement
{
    if (self.joystick.velocity.x != 0 || self.joystick.velocity.y != 0)
    {
        [self.myLabel1 setPosition:CGPointMake(self.myLabel1.position.x+.1 *self.joystick.velocity.x, self.myLabel1.position.y+.1 * self.joystick.velocity.y)];
    }
}

現在、すべてが完全に機能しており、問題はありません。しかし、キャラクターを回転させるために別のものを追加する必要があります (これを と呼びましょうself.myLabel1)。オブジェクトの作成を複製してみました (一意の名前、パラメーター、および位置を使用して、それらを画面の右側に配置しましたが、他のコードは上で使用したものとまったく同じです)。

それらも機能しますが、問題は同時に機能しないことです。左または右のいずれかをいつでも使用できますが、一緒に使用することはできません。それらを 2 つの別々のスレッドで実行する必要がありますか? 2 つの別々のセレクターを持つ 2 つの CADisplayLinks を使用してみましたが、何もしませんでした。同じものを使ってみましたが、何もありませんでした。

誰かがこの影に光を当てることができますか?

よろしくお願いします。

4

1 に答える 1