【问题标题】:using CGRectIntersectsRect for updating score of my game使用 CGRectIntersectsRect 更新我的游戏分数
【发布时间】:2014-08-06 12:55:10
【问题描述】:

我正在尝试使用CGRectIntersectsRect 更新我的分数,并且我想在每次两个图像相互碰撞时增加我的分数。但是,我的分数有时不会显示周期性,它会增加一个单位,但是当两个 UIimage 以更高的速度碰撞时它会随机增加。这是我的代码:

-(void)Collision{

if (CGRectIntersectsRect(Ball.frame, Player.frame)) {

    PlayerScoreNumber = PlayerScoreNumber + 1;
    PlayerScore.text = [NSString stringWithFormat:@"%i", PlayerScoreNumber];

    Y = arc4random() %5;
    Y = 0-Y;

}

UIImages 两个是 'ball' 和 'racket' ,我想在每次球击中球拍时增加我的分数。请帮忙...

【问题讨论】:

    标签: ios objective-c xcode uiimage


    【解决方案1】:

    我怀疑您将同一碰撞计数两次(或更多),因此您必须保持 state 关于碰撞的状态并记住您何时已经看到当前碰撞:

    在您的实现文件中创建一个新的实例变量,例如:

    @interface MyClass ()
    {
        BOOL _ballCollidedWithPlayer;
    }
    

    并像这样管理状态:

    -(void)Collision{
    
        BOOL collided = CGRectIntersectsRect(Ball.frame, Player.frame);
        if (collided) {
            if (_ballCollidedWithPlayer)
                return;    // Nothing to do; we already know about this collision
    
            PlayerScoreNumber = PlayerScoreNumber + 1;
            PlayerScore.text = [NSString stringWithFormat:@"%i", PlayerScoreNumber];
    
            Y = arc4random() %5;
            Y = 0-Y;
        }
        _ballCollidedWithPlayer = collided;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多