applyTorque
не является правильным методом для этого. Крутящий момент - это сила скручивания, которая заставляет ваш узел вращаться вокруг своей центральной точки.
Нет никакой простой команды для того, что вы ищете. Вы также не можете указать свой метод перемещения для вашего узла. Примените силу, импульс и т. Д. Вам придется придумать взлом для этого.
Пример проекта ниже делает то, что вы ищете, и он укажет вам в правильном направлении. Однако вам придется изменить код в соответствии с потребностями вашего конкретного проекта.
Коснитесь экрана одним щелчком мыши, чтобы начать перемещение узла и второй раз нажмите/коснуться экрана, чтобы начать изменение направления на 90 градусов.
#import "GameScene.h"
@implementation GameScene {
int touchCounter;
BOOL changeDirection;
SKSpriteNode *node0;
}
-(void)didMoveToView:(SKView *)view {
self.backgroundColor = [SKColor whiteColor];
node0 = [SKSpriteNode spriteNodeWithColor:[SKColor grayColor] size:CGSizeMake(50, 50)];
node0.position = CGPointMake(150, 200);
node0.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:node0.size];
node0.physicsBody.affectedByGravity = NO;
[self addChild:node0];
touchCounter = 0;
changeDirection = NO;
}
-(void)update:(CFTimeInterval)currentTime {
if(changeDirection)
[self changeMovement];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
touchCounter++;
for (UITouch *touch in touches) {
if(touchCounter == 1)
[node0.physicsBody applyImpulse:CGVectorMake(25, 0)];
if(touchCounter == 2)
changeDirection = YES;
}
}
-(void)changeMovement {
if(node0.physicsBody.velocity.dy<200) {
[node0.physicsBody applyImpulse:CGVectorMake(-0.1, 0.1)];
} else {
changeDirection = NO;
node0.physicsBody.velocity = CGVectorMake(0, node0.physicsBody.velocity.dy);
}
}
Как насчет применения силы. Например. 2 pts X направления и 1 pt Y? –