我刚刚开始搞乱xCode,并试图通过调整一些预制项目给自己一个基本的介绍。
目前有一个我正在研究的项目,它有一个球在屏幕上弹跳,并且有一个gameLoop设置如下:
此部分在.m:
中定义 - (void)gameLoop {
if (gameState = kGameStateRunning) {
ball.center = CGPointMake(ball.center.x + ballVelocity.x, ball.center.y + ballVelocity.y);
if(ball.center.x > self.view.bounds.size.width || ball.center.x < 0) {
ballVelocity.x = -ballVelocity.x;
}
if(ball.center.y > self.view.bounds.size.height || ball.center.y < 0) {
ballVelocity.y = -ballVelocity.y;
}
}
else {
if(tapToBegin.hidden) {
tapToBegin.hidden = NO;
}
}
}
我想知道的是,如果我的UIImageView *球只有在到达中心时才会从墙壁反弹,那么有没有办法让它一旦击中球的边缘就会反弹
这里的第一次海报,所以我希望我的描述性足够。
编辑:我还想尝试这样做,这样我就可以在不调整常量的情况下更改UIImageView的半径。希望这是可能的,只是试图找出纯粹的好奇心。再次感谢你们!答案 0 :(得分:0)
简单的答案是包括球半径的偏移量(以像素为单位),如下所示:
- (void)gameLoop {
ball.center = CGPointMake(ball.center.x + ballVelocity.x, ball.center.y + ballVelocity.y);
int radius = 10; // radius in pixels
if (gameState = kGameStateRunning) {
if(ball.center.x + radius > self.view.bounds.size.width || ball.center.x - radius < 0) {
ballVelocity.x = -ballVelocity.x;
}
if(ball.center.y + radius > self.view.bounds.size.height || ball.center.y - radius < 0) {
ballVelocity.y = -ballVelocity.y;
}
}
...
在页面上有很多关于碰撞和更高级物理的教程,例如: NeHe Productions
希望这有点帮助。
编辑:为了响应您对动态半径大小的编辑,请尝试类似(未经测试):
UIImageView *ball;
CGFloat radius = ball.frame.size.width; // alternatively ball.frame.size.height