画面上のオブジェクトを追跡して追跡し、それらに向かって移動するスプライトがあります。
メソッドはスケジュールに従って実行され、基本的に次のようになります。
- (void) nextFrame:(ccTime)dt {
//calculate distance between the bubble and the fish
float dx = bubbleToChase.position.x - fish.position.x;
float dy = bubbleToChase.position.y - fish.position.y;
float d = sqrt(dx*dx + dy*dy);
float v = 400;
if (d > 190){
NSLog(@"moving the fish!");
fish.position = ccp( fish.position.x + dx/d * v *dt,
fish.position.y + dy/d * v *dt);
}
}
このコードはうまく機能し、距離が 190 を超えると、魚はその距離に向かって泳ぎます。
問題は、オブジェクトに物理特性があるため、画面上でスライドすることです。これにより、魚のスプライトにジギング/よろめき効果が生じます。これは、魚がバブルに到達すると停止しますが、バブルが (d > 190) のように段階的に離れていくにつれて、揺れて急速に停止するためです。
このジギング効果を取り除くにはどうすればよいですか? 魚が泡の位置に到達したら、魚の動きを止めたいだけです。またはそれを滑らかにする代替手段。助けていただければ幸いです。