Reputation: 516
What I have:
You click and a ball moves to that location.
The screen is split horizontally between upper & lower.
Let's say that the ball is on the lower side and you can't click on the lower side to have it move. You have to click the top side of the screen. This flips with regards to upper or lower.
What I'm going for:
The x coord doesn't change at all.
When the ball hits to top, it would change directions and go back down with out a click
Remove the UITouch
location variable
Upper and lower stays system stays
Every thing helps thank u very much.
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
/* Called when a touch begins */
//SKAction *action = [SKAction rotateByAngle:M_PI duration:1];
//[sprite runAction:[SKAction repeatActionForever:action]];
for (UITouch *touch in touches) {
location = [touch locationInNode:self];
}
float ballVelocity = self.frame.size.height/3.0;
CGPoint moveDifference = CGPointMake(location.x - ball.position.x,location.y - ball.position.y);
float distanceToMove = sqrtf(moveDifference.x * moveDifference.x +moveDifference.y * moveDifference.y);
float moveDuration = distanceToMove / ballVelocity;
Act_Move = [SKAction moveTo:location duration:moveDuration];
Act_MoveDone = [SKAction runBlock:^(){
NSLog(@"stoped");}];
ActballMoveSeq = [SKAction sequence:@[Act_Move,Act_MoveDone]];
if(((location.y>screenSize.height/2)&&(ball.position.y<screenSize.height/2))||((location.y<screenSize.height/2)&&(ball.position.y>screenSize.height/2))){
if(canTap == true){
[ball runAction:ActballMoveSeq withKey:@"moveBall_seq"];
}
}
}
Upvotes: 2
Views: 91
Reputation: 11696
To make the ball move up a certain distance and come back down on its own accord, use applyImpulse with your node.
// modify the dy value (100) to whatever value suits your needs
[myNode.physicsBody applyImpulse:CGVectorMake(0, 100)];
As long as your node is affected by gravity, it will eventually come back down.
Upvotes: 2