#ios #cocoa-touch #sprite-kit #game-engine
#iOS #cocoa-touch #набор спрайтов #игровой движок
Вопрос:
Я пытаюсь создать игру с помощью фреймворка sprite kit, но я застрял, пытаясь заставить персонажа двигаться. Я хочу, чтобы персонаж перемещался (влево / вправо) при нажатии клавиши (влево / вправо). При нажатии персонаж должен ускоряться (без ограничения скорости), а когда я отпускаю клавишу, персонаж должен замедляться до полной остановки. Я не могу придумать способ реализовать это с помощью SKAction
… Кто-нибудь может пролить на это свет? Спасибо. Это то, что я пробовал до сих пор.
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
/* Called when a touch begins */
UITouch *touch = [touches anyObject];
CGPoint touchLocation = [touch locationInNode:self];
if (touchLocation.x > [[UIScreen mainScreen]applicationFrame].size.width / 2) {
_rightPressed = YES;
} else {
_leftPressed = YES;
}
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
_rightPressed = NO;
_leftPressed = NO;
_speedDelimiter = 0;
}
-(void)update:(CFTimeInterval)currentTime {
// ... code ...
if (_rightPressed amp;amp; !_leftPressed amp;amp; _speedDelimiter < 10) {
SKAction * moveRight = [SKAction moveBy:CGVectorMake(10, 0) duration:5];
[self.player runAction:moveRight];
_speedDelimiter ;
} else if (_leftPressed amp;amp; !_rightPressed amp;amp; _speedDelimiter < 10){
SKAction * moveLeft = [SKAction moveBy:CGVectorMake(-10, 0) duration:5];
[self.player runAction:moveLeft];
_speedDelimiter ;
}
}
Я думаю, что мне следует использовать velocity
свойство в SKPhysicsBody
свойстве моего персонажа. Но я не уверен.
Комментарии:
1. Этого можно очень легко достичь с помощью физического движка.
2. Как насчет spritekit?
3. Я имею в виду физический движок в SpriteKit. Прикрепите SKPhysicsBody к персонажу и примените к нему силу.
4. / согласитесь, действия не совсем соответствуют тому, что вы пытаетесь сделать. Я думаю, вы могли бы вносить некоторые текущие изменения в свойство speed действия, но я бы просто размещал персонажа вручную при каждом обновлении на основе значений, или, если вам не нужно сверхточное позиционирование, тогда просто позвольте физической системе обрабатывать все это за вас.