簡體   English   中英

如何檢測UIImageView碰撞

[英]How to detect UIImageView Collisions

我想知道為什么我的代碼不起作用。 我希望球(UIImageView)從一個塊(也是一個UIImageView)反彈。 我的球將x和y的運動都切換為負,而不是一個。 怎么了??? 請幫助...這是我的代碼

-(void)animateBall:(NSTimer *)theTimer {

    collisionCount ++;
    bouncyBall.center = CGPointMake(bouncyBall.center.x + ballMovement.x, bouncyBall.center.y + ballMovement.y);

    if (CGRectIntersectsRect(bouncyBall.frame, wallOne.frame)) {
        if (collisionCount >= 5) {
            [self processCollision:wallOne];
            collisionCount = 0;
        }
    }

    if (bouncyBall.center.x > 313 || bouncyBall.center.x < 8) {
        ballMovement.x = -ballMovement.x;
    }
    if (bouncyBall.center.y > 453 || bouncyBall.center.y < 8) {
        ballMovement.y = -ballMovement.y;
    }
}

-(void)processCollision:(UIImageView *)wall {

    if (ballMovement.x > 0 && wall.frame.origin.x - bouncyBall.center.x <= 4) {
        ballMovement.x = -ballMovement.x;
    }
    else if (ballMovement.x < 0 && bouncyBall.center.x - (wall.frame.origin.x + wall.frame.size.width) <= 4) {
        ballMovement.x = -ballMovement.x;
    }

    if (ballMovement.y > 0 && wall.frame.origin.y - bouncyBall.center.y <= 4) {
        ballMovement.y = -ballMovement.y;
    }
    else if (ballMovement.y < 0 && bouncyBall.center.y - (wall.frame.origin.y + wall.frame.size.height) <= 4) {
        ballMovement.y = -ballMovement.y;
    }
}

即使球擊中邊緣中心也會發生嗎? 無論如何,您是否只需要一次處理一個尺寸? 不是第三可ifelse if

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM