В настоящее время, что делает мое приложение: Когда мяч движется, и u коснитесь шара, измените направление и направьте противоположный путь. (вверх и вниз) (НЕТ слева направо) (0 = ВВЕРХ, 1 = ВНИЗ, 2 = НЕ ПЕРЕДВИЖЕНИЕ) в основном просто хотят, чтобы мяч переключал направление каждый раз, когда вы нажимаете.Sprite-kit физикаBody applyImpulse
Проблема заключается в том: Я использую [ball.physicsBody applyImpulse: CGVectorMake (0, 100)]; это вызывает некоторые проблемы, потому что для переключения направлений он должен противостоять другой силе.
Я узнал, что удвоение силы, которая будет противостоять другой силе, работает. но допустим, что я установил переменную «ballSpeed» (еще не существует) ballSpeed * 2 (для противодействующей силы) это сработало бы, но не увеличилось бы число, если вы получите дальше, чем игра? (Возможно, максить целое число)
-(void)handleDirectionChange{
if(((location.y>self.frame.size.height/2)&&(ball.position.y<self.frame.size.height/2))||((location.y<self.frame.size.height/2)&&(ball.position.y>self.frame.size.height/2))){
if(canTap == true){
NSLog(@"TAPPED-TRUE");
if(direction == 0 && canTap == true){
NSLog(@"MOVE-0");
[ball.physicsBody applyImpulse:CGVectorMake(0, 100)];//hereeee
canTap = false;
NSLog(@"CANT TAP");
direction = 1;
}
if(direction == 1 && canTap == true){
NSLog(@"MOVE-1");
[ball.physicsBody applyImpulse:CGVectorMake(0, -200)];//hereeeee
canTap = false;
NSLog(@"CANT TAP");
direction = 0;
}
}
}
}
Только в случае, если у хочу увидеть другой код
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *touch in touches) {
location = [touch locationInNode:self];
}
[self handleDirectionChange];
}
-(void)handleDirection{
[ballParent enumerateChildNodesWithName:@"ball" usingBlock:^(SKNode *node, BOOL *stop) {
if([ball.name isEqualToString:@"ball"] && (ball.position.y > self.frame.size.height/2-2 && ball.position.y < self.frame.size.height/2+2)){//when the ball passes middle
if(canTap == false) {
canTap = true;
NSLog(@"CAN TAP");
}
}
}];
}
-(void)update:(CFTimeInterval)currentTime {
[self handleDirection];
}