Я делаю небольшую игру SpriteKit, где враги следуют за UIBezierPath. (Есть ли какой-либо другой способ сделать это? Кажется довольно непродуктивным)Почему UIBezierPath ведет себя так?
Так или иначе, мой враг ведет себя очень странно. Вот код для простого круга с диаметром 300:
enemy.position = CGPointMake(0, 0);
UIBezierPath* circlePath = [UIBezierPath bezierPathWithOvalInRect: CGRectMake(0, 0, 300, 300)];
CGPathRef pathRef = [cicrlePath CGPath];
SKAction *followPath = [SKAction followPath:pathRef
asOffset:NO
orientToPath:NO
duration: pathSpeed];
SKAction *forever = [SKAction repeatActionForever:followPath];
[enemy runAction:forever];
Теперь посмотрим, как я определил позицию врагов и положение circlePath в точке (0,0)?
Каким-то образом это дает мне этот результат: http://www.gfycat.com/DistinctSnarlingAracari
Это на самом деле не делает смысла, так как это путь к месту, я думаю? Или я чего-то не хватает?
О, как я уже упоминал, как я мог сделать вражеские движения для своей игры наиболее эффективным/продуктивным способом? В настоящее время я использую PaintCode с UIBeziers, но это всегда дает мне странный результат. Я с нетерпением жду ваших ответов.
Что именно не так в вашем GIF? Если вы считаете, что значок «1» находится не в том месте, где вы ожидаете его? –
Ну, так как опорная точка по умолчанию для сцены с набором Sprite находится в левом нижнем углу (см. Здесь: https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Nodes/Nodes.html # // apple_ref/doc/uid/TP40013043-CH3-SW19) Я ожидаю, что 1 будет видна только в левом нижнем углу EDIT: Я только что осознал свою ошибку: я думал, что он будет использовать центр BezierPath чтобы расположить его путь. –