0

私は客観的な C 初心者で、プレイヤーが矢印キーで戦車を動かし、マウスで砲塔を狙うことができる 2D ゲームを作成しています。

現在、砲塔の方向は ccMouseMoved を使用して (以下の方法で) 更新されています。これは を渡し、NSEvent(convertEventToGL によって) 非常に簡単に (画面に対する相対ではなく) ウィンドウに対する相対座標に変換できます。これはすべて機能しますが、矢印キーで戦車を動かしたときに、以下のメソッドで砲塔の方向を更新できるようにしたいと考えています (つまり、戦車が下に移動すると、砲塔はマウス カーソルを指し続けるように調整されます)。 .

どうすればこれを達成できますか?

-(BOOL) ccMouseMoved:(NSEvent *)event
{
    CGSize winSize = [CCDirector sharedDirector].winSize;
    int x = MAX(_player.position.x, winSize.width/2);
    int y = MAX(_player.position.y, winSize.height/2);
    x = MIN(x, (_tileMap.mapSize.width * _tileMap.tileSize.width) - winSize.width / 2);
    y = MIN(y, (_tileMap.mapSize.height * _tileMap.tileSize.height) - winSize.height/2);
    CGPoint actualPosition = ccp(x, y);

    CGPoint mousePosition = [[CCDirector sharedDirector] convertEventToGL:event];
    _playerTurret.rotation= -atan2((mousePosition.y - winSize.height/2 - _player.position.y + actualPosition.y),(mousePosition.x - winSize.width/2 - _player.position.x + actualPosition.x)) * 180/M_PI + 180;

    return YES;
}
4

1 に答える 1