我有这个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
,但它让比赛变得艰难,因为它推迟了比赛的速度。所以我不确定如何解决它。有什么建议?
答案 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)) { ...