球在一个圆圈中弹跳

时间:2013-03-29 06:37:13

标签: iphone objective-c xcode ipad uikit

我成功地在 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;
}

现在我想在圈区内反弹球,我该怎么做?

2 个答案:

答案 0 :(得分:2)

好吧我们假设你的画面在200 x 200像素。 所以你的中心圈在100,100

您可以像这样计算距此点的距离:

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

当此数字为100或更大时,您需要改变方向。

一旦你拥有了这个,你将不得不引入一个方向向量并找出如何偏转一个圆形物体,但我会让你先去看看。

答案 1 :(得分:0)

将中心的x和y绑定为距离圆周最多radius距离(其中radius是球的半径)。这应该是非常简单的几何形状。