2

UIViewの横でボールをうまくバウンドさせています。

その中にボールクラスを作成しました。次のコードを使用してボールを移動しています。

    self.center=CGPointMake(self.center.x + mXSpeed, self.center.y + mYSpeed);
if (!CGRectContainsRect(self.superview.bounds, self.frame))
{

    if (self.frame.origin.x<self.superview.bounds.origin.x)
        mXSpeed=abs(mXSpeed);
    if (self.frame.origin.x>self.superview.bounds.size.width-self.frame.size.width)         
        mXSpeed=-abs(mXSpeed);  
    if (self.frame.origin.y<0)//self.superview.frame.origin.y)          
        mYSpeed=abs(mYSpeed);
    if (self.frame.origin.y>self.superview.bounds.size.height-self.frame.size.height)           
        mYSpeed=-abs(mYSpeed);

    //mYSpeed=-mYSpeed;
}

サークルエリア内でボールをバウンドさせたいのですが、どうすればいいですか?

4

2 に答える 2

2

フレームが 200 x 200 ピクセルであると仮定します。だからあなたの中心は 100,100 で円を描くように

この点からの距離は次のように計算できます。

dist = sqrt((x-100)^2+(y-100)^2)

この数が 100 以上になると、方向を変える必要があります。

これができたら、方向ベクトルを導入し、円形のオブジェクトをそらす方法を理解する必要がありますが、最初にそれを試してみましょう.

于 2013-03-29T06:43:56.787 に答える
0

radius中心の x と y を常に円周から最大距離 (どこradiusにボールの半径があるか)になるようにバインドします。それはかなり単純なジオメトリでなければなりません。

于 2013-03-29T06:43:49.200 に答える