我想制作我的球员,让球向某个方向移动,大约120度向上移动。此时球向方向移动,但球不上升。球也有4种不同的速度。
if(CGRectIntersectsRect(BallA.frame, PlayerA1.frame)){
Y = arc4random() %5;
Y = 0-Y;
}
}
球运动
timer = [NSTimer scheduledTimerWithTimeInterval:0.006 target:self selector:@selector(BallMovement4) userInfo:nil repeats:YES];
-(void)BallMovement4{
[self Computer4Movement];
[self Collision4];
Ball4.center = CGPointMake(Ball4.center.x + X, Ball4.center.y + Y);
if (Ball4.center.x < 15) {
X = 0 - X;
}
if (Ball4.center.x > 305) {
X = 0 - X;
}
请帮助,
谢谢
米兰
答案 0 :(得分:1)
有点不清楚你正在尝试做什么以及你的班级如何运作,但总的来说,如果你想要改变一切,一个好的方法就是使用向量。例如,如果您希望球在给定方向上每帧移动3个像素,则球将具有位置和速度矢量,如下所示:
typedef struct Ball { // could be a class if that makes sense for your use
CGPoint position;
CGPoint velocity;
} Ball;
您可以将它们设置为某个初始值,如下所示:
Ball ball = { { 0.0, 0.0 }, // Ball starts at the origin
{ 1.0, 2.0 } }; // Ball starts out moving 1 pixel to the right and 2 pixels up
然后在每个游戏框架上,你将速度添加到位置,如下所示:
ball.position.x += ball.velocity.x;
ball.position.y += ball.velocity.y;
您可以更改速度,例如,当球击中墙壁时。如果你试图模拟真实的东西,你需要找到球撞到墙壁的角度并反转它。