Ios 碰撞时反向
我正在读一本xCode的书,试图学习如何为iOS编程。遇到了问题。。在我的应用程序中,除了划桨碰撞之外,我几乎所有的东西都在工作。我做了一个简单的针球游戏,当球碰到障碍物时,障碍物会破裂,球会落下,我遇到的问题是,当球落下时,它无法识别碰撞,直接穿过球拍 问题是checkCollisionWithBlocks 不确定当球击中时,我将如何改变球的方向,使其不通过挡板:Ios 碰撞时反向,ios,objective-c,Ios,Objective C,我正在读一本xCode的书,试图学习如何为iOS编程。遇到了问题。。在我的应用程序中,除了划桨碰撞之外,我几乎所有的东西都在工作。我做了一个简单的针球游戏,当球碰到障碍物时,障碍物会破裂,球会落下,我遇到的问题是,当球落下时,它无法识别碰撞,直接穿过球拍 问题是checkCollisionWithBlocks 不确定当球击中时,我将如何改变球的方向,使其不通过挡板: -(void)checkCollisionWithScreenEdges{ if(ballRect.origin.x &l
-(void)checkCollisionWithScreenEdges{
if(ballRect.origin.x <= 0){
ballVelocity.x = abs(ballVelocity.x);
}
if(ballRect.origin.x >= VIEW_WIDTH - BALL_SIZE){
ballVelocity.x = -1 * abs(ballVelocity.x);
}
if(ballRect.origin.y <= 0){
ballVelocity.y = abs(ballVelocity.y);
}
if(ballRect.origin.y >= VIEW_HEIGHT - BALL_SIZE){
ballRect.origin.x = 180.0;
ballRect.origin.y = 220.0;
ballVelocity.y = -1*abs(ballVelocity.y);
}
}
-(void)checkCollisionWithBlocks{
for(mmBlockView* blockView in blocks){
if(CGRectIntersectsRect(blockView.frame,ballRect)){
ballVelocity.y = -ballVelocity.y;
[blocks removeObject:blockView];
[blockView removeFromSuperview];
break;
}
}
}
-(void)checkCollisionWithPaddle{
if(ballRect.origin.x <= 0){
ballVelocity.x = abs(ballVelocity.x);
}
if(ballRect.origin.x >= VIEW_WIDTH - BALL_SIZE){
ballVelocity.x = -1 * abs(ballVelocity.x);
}
if(ballRect.origin.y <= 0){
ballVelocity.y = abs(ballVelocity.y);
}
if(ballRect.origin.y >= VIEW_HEIGHT - BALL_SIZE){
ballRect.origin.x = 180.0;
ballRect.origin.y = 220.0;
ballVelocity.y = -1*abs(ballVelocity.y);
}
}
-(无效)检查与屏幕的冲突{
if(ballRect.origin.x=视图宽度-球大小){
ballVelocity.x=-1*abs(ballVelocity.x);
}
if(ballRect.origin.y=视图高度-球大小){
ballRect.origin.x=180.0;
ballcrect.origin.y=220.0;
球速y=-1*abs(球速y);
}
}
-(无效)检查与块的冲突{
用于(mmBlockView*块中的块视图){
if(CGRectIntersectsRect(blockView.frame,ballRect)){
ballVelocity.y=-ballVelocity.y;
[块移除对象:块视图];
[blockView从SuperView移除];
打破
}
}
}
-(无效)检查与拨杆的碰撞{
if(ballRect.origin.x=视图宽度-球大小){
ballVelocity.x=-1*abs(ballVelocity.x);
}
if(ballRect.origin.y=视图高度-球大小){
ballRect.origin.x=180.0;
ballcrect.origin.y=220.0;
球速y=-1*abs(球速y);
}
}
CheckCollisionWithPable
并不是检查球拍是否与球拍发生碰撞,而是检查球是否离开屏幕
要检查它是否与桨叶相撞,您可以执行以下操作:
if(CGRectIntersectsRect(paddleView.frame, ballRect))
如果有帮助的话,你可能会认为划桨就像一个木块,只是它可以移动(当你击中它时,它不会消失:-)