Я в настоящее время работаю над Cocos2D Mac Game в Objective-C.
У меня работает движение, но у меня есть еще один вопрос ..
Я использую этот код для перемещения моегоигрок, это муха, поэтому ему нужно свободное движение во всех направлениях.
Событие клавиатуры:
- (void)ccKeyDown:(NSEvent*)keyDownEvent
{
// Get pressed key (code)
NSString * character = [keyDownEvent characters];
unichar keyCode = [character characterAtIndex: 0];
// Player movement
if (keyCode == 119) {
playerMoveUp = TRUE;
} else if (keyCode == 115) {
playerMoveDown = TRUE;
}
if (keyCode == 100) {
playerMoveLeft = TRUE;
} else if (keyCode == 97) {
playerMoveRight = TRUE;
}
}
- (void)ccKeyUp:(NSEvent*)keyUpEvent
{
// Get pressed key (code)
NSString * character = [keyUpEvent characters];
unichar keyCode = [character characterAtIndex: 0];
// Player movement
if (keyCode == 119) {
playerMoveUp = FALSE;
} else if (keyCode == 115) {
playerMoveDown = FALSE;
}
if (keyCode == 100) {
playerMoveLeft = FALSE;
} else if (keyCode == 97) {
playerMoveRight = FALSE;
}
}
Игровой цикл:
-(void) tick: (ccTime) dt
{
// Get player current position
NSInteger playerPositionX = player.position.x;
NSInteger playerPositionY = player.position.y;
// Player movement
if (playerMoveUp == TRUE) {
player.position = ccp(playerPositionX, playerPositionY + 1);
}
if (playerMoveDown == TRUE) {
player.position = ccp(playerPositionX, playerPositionY - 1);
}
if (playerMoveLeft == TRUE) {
player.position = ccp(playerPositionX + 1, playerPositionY);
}
if (playerMoveRight == TRUE) {
player.position = ccp(playerPositionX - 1, playerPositionY);
}
}
Моя проблема, когда мойигрок движется влево, невозможно добавить клавишу вверх одновременно, поэтому игрок будет двигаться влево и вверх.Каков наилучший способ достичь этого?