0

この問題の解決策が必要です。 Imageオブジェクト(果物の画像)は、雪が降るのと同じように上から下にアニメーション化されます。別のオブジェクト(バスケット画像)imageを使用してそのオブジェクトをキャッチする必要があります。image objectそこで、バスケット画像とフルーツ画像の交点を調べたいと思います。でも交点がわかりませんでした。

CGRectIntersectsRect(fruitObjPresentationLayer.frame, basketObjPresentationLayer.frame);

交点を見つけるために。

4

2 に答える 2

0

CGRectIntersectRectbooleanこの関数に渡されたフレームを持つ2つのオブジェクト間で衝突が発生した場合に、値を返す関数です。あなたの場合、両方のオブジェクトの更新されたフレームを渡す必要があります。あなたの質問によると、オブジェクトは上から下にアニメーション化されているということは、両方のオブジェクトのフレームが実行時に変更されることを意味します。したがってframe、両方のオブジェクトの現在の位置を計算してから、更新されたものを関数に渡すframe必要がありCGRectIntersectRectます。更新されたフレームをに渡してCGRectIntersectRect、問題を解決してください。

更新された値を計算するには、次のようなデルタ値も見つける必要があります。

deltax = currentposition.x-previousposition.x;
deltay = currentposition.y-previousposition.y;

frame次に、両方のオブジェクトのを次のように更新します

CGRect Frame = obj1.frame;

    Frame.origin.x+=delta_x;
    Frame.origin.y+=delta_y; 

2番目も同様ですobject

于 2013-01-11T04:49:36.263 に答える
0

CGRectIntersectsRect()は、交差点ではなくブール値を返します。したがって、それらが交差する場合は、フレームの位置を相互に比較してから、数学を実行して交差がどこにあるかを把握します。

また、フレームは長方形であるため、それらの交点は実際には点ではなく線になります。

NSTimerを設定して、たとえば1秒間に60回起動して呼び出すことができます。

if ([CGRectIntersectsRect(fruitObjPresentationLayer.frame,    basketObjPresentationLayer.frame)] {
//when this is called do whatever you want with the objects current frame.origin
}
于 2013-01-11T04:55:11.220 に答える