我是一个客观的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;
}
答案 0 :(得分:0)
看起来你可以使用NSWindow方法mouseLocationOutsideOfEventStream。