![]() |
|
||||||||||
|
|
|
|||||
|
Подскажите как бы сделать так, чтобы рыбки не выплывали за пределы аквариума? Думал, сделать проверку на hitTestObject, но с такой фигурой не прошел этот вариант, ведь превратив красную фигуру в мувиклип, он автоматически заполнит неотрисованые места. И в "дырке", где должны плавать рыбки, все объекты пересекутся. Что делать?
|
|
|||||
|
Если просто - можешь задать внутри окружности прямоугольник из 4-х стенок и проверять столкновение рыбок с ними. При столкновении рыбка меняет направление
Если сложно - то можно представить все объекты в виде BitmapData и вызвать HitTest(), который попиксельно сравнивает битмапы |
|
|||||
|
Регистрация: May 2010
Адрес: пространство в положении
Сообщений: 219
|
лучше просто координаты проверять.
|
|
|||||
|
с координатоми кажется все сложнее
|
|
|||||
|
Цитата:
Т.к. аквариум круглый, то достаточно измерить расстояние от его центра до рыбки, и если расстояние больше радиуса аквариума - значит надо разворачивать рыбку
__________________
...вселенская грусть |
|
|||||
|
Значит нужно рассчитывать расстояние от центра аквариума до положения рыбки. Центр аквариума у нас x=0 и у=0, делаем событие на ENTER_FRAME отслеживающее положение рыбки по X и Y. Ну и сам радиус равен 170 pix. А по какой формуле можно рассчитать расстояние, которое преодолевает рыбка?
Добавлено через 10 минут Ну как бы по теореме Пифагора? Помогите записать это с помощью as3.0 h - гипатенуза x - катет y - второй катет h = корень квадратный из суммы x в квадрате и у в квадрате |
|
|||||
|
Регистрация: Nov 2007
Сообщений: 1,724
|
А зачем здесь теорема Пифагора, которая, как я помню относится вовсе к треугольникам?
Я считаю здесь можно просто измерять расстояние от центра аквариума, до центра рыбки (учитывая ее ширину). Расчитать расстояние между точками можно по формуле Дальше просто проверяете если расстоение больше (170 - ширина рыбки), тогда рыбка ударилась об аквариум |
|
|||||
|
Lorem ipsum
|
Рыбка:
Xfish Yfish Rfish (радиус круга описывающего рыбку, определяется ее размером) Аквариум: Raquarium Расстояние до центра круга, описывающего рыбку не должно быть больше радиуса аквариума за вычетом радиуса вышеуказанного круга: function keepItInside( Xfish : Number, Yfish : Number, Rfish : Number, Raquarium : Number ) : void { var R : Number = Raquarium - Rfish; if ( Xfish*Xfish + Yfish*Yfish > R*R) { // разворачиваем рыбку } } Вот и все. Разворачивайся рыбка большая и маленькая.
__________________
Поймай яблоко 2! |
|
|||||
|
ничего не получилось, с вот этой формулой всегда вылетают предупреждения
|
|
|||||
|
Lorem ipsum
|
Скобку лишнюю убери в конце.
__________________
Поймай яблоко 2! |
![]() |
![]() |
Часовой пояс GMT +4, время: 15:41. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| hittestobject , область , проверка |
|
|