iphone - 在两个 Sprite 之间创建距离缓冲区

标签 iphone ios ipad cocos2d-iphone

我有两个 Sprite ,一个“跟踪”并跟随另一个。我已经有了这个工作,所以一条鱼会跟随屏幕周围的气泡(它会向着这个方向旋转并向它移动)。这是一个关于它如何工作以及我想要发生什么的图表:

enter image description here

我正在尝试弄清楚如何将我的鱼“缓冲”到远离气泡中心的正确 (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/

相关文章:

iPhone——可以区分指尖和整个指腹吗?

iOS:根据数组的顺序对文件夹中的文件进行排序

iPad - 如何在启动时自动将 RootView 中的第一个单元格加载到 DetailView 中?

iphone - 设置 subview Controller 属性

ios - 使用新项目 iOS 上传新版本的应用程序

ios - 我向 NSUserDefaults.synchronize() 传递什么参数?

ios - 从 Storyboard的 UICollectionViewFlowLayout 创建 IBOutlet 时出错

iphone - 操作简单的 Core Data 对象时崩溃

ios - 在 iOS 14.0 及更高版本上无法下载临时分布式应用程序

iphone - 当有很多重复顶点时,glDrawElements() 是否比 glDrawArrays() 更有效?