怎么做才能改善这个跳跃代码?

时间:2014-03-13 00:05:31

标签: ios objective-c

我有这个iOS游戏,青蛙从百合垫跳到百合垫。游戏处于垂直方向,我试图实现的视角是鸟瞰图,用户从顶部观察青蛙和风景。青蛙从睡莲叶跳到百合垫,代码如下:

弹跳方法:

-(void)bounce {
        [self jumpSound];

        if (frog.center.y > 450) {
            upMovement = 2;
        }
        else if (frog.center.y > 350) {
            upMovement = 1.5;
        }
        else if (frog.center.y > 250) {
            upMovement = 0.5;
        }
}

和lilypad运动:

-(void)lilyPadMovement {

   if (CGRectIntersectsRect(frog.frame, lily.frame) && (upMovement <=-1)){
        [self bounce];
        [self lilyPadFall];
        if (lilyPadUsed == NO) {
            addedScore = 1;
            lilyPadUsed = YES;
        }
    }

}

基本上我试图修复的是青蛙弹跳运动。当青蛙落在睡莲叶的中间并弹跳时它并不会看起来很糟糕,但有时候青蛙会只是触摸lil垫的两侧,因为矩形相交,所以会调用反弹方法。我试过CGRectContainsRect,但它让比赛变得艰难,因为它推迟了比赛的速度。所以我不确定如何解决它。有什么建议?

1 个答案:

答案 0 :(得分:0)

你真的想知道是否有足够的重叠使青蛙能够推开,而不是落水。因此,中心之间的距离可能小于X,您可以根据看起来不错的情况调整X.

例如(使用毕达哥拉斯公式):

 //having defined this function: 
inline float square (float a) { return a*a; }
 //change intersect test to:
 if (((square(frog.center.x-lily.center.x) + square(frog.center.y-lily.center.y)) < 10000) && 
     (upMovement <= -1)) { ...