2013-03-29 2 views
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; 
} 

сейчас я хочу отсканировать мяч внутри круга. Как я могу это сделать?

ответ

0

Простое ограничение x и y центра всегда должно быть не более radius Расстояние (где radius - это радиус вашего шара) от окружности. Это должна быть довольно простая геометрия.

2

Хорошо позволяет предположить, что ваш кадр в 200 на 200 пикселей. Так центр вас круг в 100,100 на

Вы можете рассчитать расстояние от этой точки, как это:

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

Когда это число 100 или больше, вы должны изменить свое направление.

Как только у вас будет это, вам нужно будет ввести вектор направления и выяснить, как отклонить круглый объект, но я позволю вам идти первым.

+0

эй я пытаюсь использовать ваш код, мой размер изображения 240 * 240, так что используйте float dist = sqrt (((int) self.frame.origin.x-120)^2 + ((int) self.frame .origin.y-120)^2); но я получаю максимальное значение 14 или 15, он никогда не выходит за него. – freelancer

+0

поместите некоторые записи на то, что self.frame.origin.y дает – Frank

Смежные вопросы