Objective c 目标C-无事件检测小鼠位置

Objective c 目标C-无事件检测小鼠位置,objective-c,cocos2d-iphone,kobold2d,Objective C,Cocos2d Iphone,Kobold2d,我是一个目标C noob,我正在制作一个2d游戏,允许玩家用箭头键移动坦克,用鼠标瞄准炮塔 目前,使用ccMouseMoved更新转台方向(通过以下方法)。这将传递一个NSEvent,然后可以非常轻松地(通过convertEventToGL)将其转换为相对于窗口的坐标(相对于屏幕)。这一切都是可行的,但它希望能够使下面的方法在坦克通过箭头键移动时更新炮塔方向(即,如果坦克向下移动,炮塔将调整以继续指向鼠标光标) 我怎样才能做到这一点 -(BOOL) ccMouseMoved:(NSEvent *

我是一个目标C noob,我正在制作一个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;
}

看起来您可以使用NSWindow方法mouseLocationOutsideOfEventStream