我有两个 Sprite ,一个“跟踪”并跟随另一个。我已经有了这个工作,所以一条鱼会跟随屏幕周围的气泡(它会向着这个方向旋转并向它移动)。这是一个关于它如何工作以及我想要发生什么的图表:
我正在尝试弄清楚如何将我的鱼“缓冲”到远离气泡中心的正确 (x,y) 位置,但我不确定如何操作。这是我的代码,它按计划运行(60* 秒):
- (void) nextFrame:(ccTime)dt {
float dx = bubble.position.x - fish.position.x;
float dy = bubble.position.y - fish.position.y;
float d = sqrt(dx*dx + dy*dy);
float v = 200;
if (d > 1){
fish.position = ccp( fish.position.x + dx/d * v *dt,
fish.position.y + dy/d * v *dt);
} else {
fish.position = ccp(bubble.position.x, bubble.position.y);
}
float angle = CC_RADIANS_TO_DEGREES(atan2f(dx, dy));
angle -= 90;
fish.rotation = angle;
if(bubble.position.x < fish.position.x){
fish.flipY = YES;
} else {
fish.flipY = NO;
}
}
任何想法或帮助表示赞赏。谢谢
最佳答案
您的除零检查中已经有了解决方案的种子。您希望鱼在更远的距离处停止移动,因此更改 d
上的条件。将您的第一个 if/else 替换为:
if (d > radiusOfBubblePlusRadiusOfFish){
fish.position = ccp( fish.position.x + dx/d * v *dt,
fish.position.y + dy/d * v *dt);
}
并保持其他一切不变。
关于iphone - 在两个 Sprite 之间创建距离缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10642290/