Просмотр полной версии : Как програмно вычитать центр и край объекта?
Profile!
31.03.2004, 19:23
Есть отрывок кода для клипа (например, гоняющяя по экрану машинка):
if (_y<0)
{
ySpeed = 0;
}
Если машина врезается в край экрана (где нарисована стенка), то она по идеи должна останавливаться ТОЧНО тогда, когда её капот, дверь, или любая точка столкнётся с бордюром. Т. е. надо, чтобы условие было не на центр, а на край машины (длину экрана мы как будто не знаем, длину машины тоже).
Пробовал разные условия, но машина или тормозит раньше бордюра или вылетает за него. Если же "наехать" на бордюр (стенку) не прямо, а полубоком, то расстояние уменьшается или увеличивается.
Пробовал даже
_y - Math.sqrt((_height*_height)+(_width*_width))/2;
.
Может тут стоит использовать hit_test? Можно ли без него обойтись?
Nox Noctis
31.03.2004, 22:39
нужна комбинация хиттеста с провекой координат. ведь при большой скорости можно пролететь насквозь и так и не столкнуться.
в любом случае проверять координаты/хиттест надо ПЕРЕД тем как двигать машину. например, можно двигать невидимый клип, схематично повторяющий контуры машины, и делать все вычисления относительно него. а саму видимую машинку только перемещать куда надо по результатам вычисления в текущем кадре.
Nox Noсtis а могбы новичкам показать на примере свою идею .
как програмно контролировать перемещение прямоугольника с проверкой границ обьекта взаимодействия , границ экрана.
Это долго и нудно делать, я думаю ответа не будет ...
Nox Noctis
01.04.2004, 10:47
Оригинал написал(а) D12
могбы я сильно похож на мать Терезу ? :)
сейчас нет времени совсем.
надо сергвизарда и айлавЪю покликать :)
Спасибо. Я вас тоже люблю.
но машина или тормозит раньше бордюра или вылетает за него.
можно в условие остановки вставить коррекцию координат:
if (Math.abs(_y)<val)
{
ySpeed = 0;
_y=0;
}
ТОЧНО тогда, когда её капот, дверь, или любая точка столкнётся с бордюром.
тут на все это добро можно навесить маяки (точки) и проверять их пресечение
sergwizard
02.04.2004, 04:49
Ага, а я похож на мать Терезу, да? Особенно в профиль.
Дело тут даже не в клипах-маячках, - задача усложняется тем, что плеер среды разработки и собственно сам плеер по-разному обрабатывают такие параметры, как Stage.width и Stage.height (это четко видно в представленном примере). Я тут поковырялся-поковырялся, результатом не удовлетворился, и решил, что лучше я пойду помогать бедным зулусам, беженцам и рахитичным детишкам.
Но поработать в этом направлении можно. Кто следующий на роль мамы Терезы?
что бы не быть голословным
к тому что уже говорил: Nox прав, что бы не пролететь насквозь, надо проверять всю длину предстоящего шага, тока не обязательно для этого заводить фантомный мувик, можно и тестовыми точками в самом обойтись
зы: насчет Stage.width: можно проверять выход за границу мувика( рамки) и не заморачиваться на Stage
sergwizard
02.04.2004, 20:06
2Silin Твой вариант хорош, хотя в нем есть свои недостатки (ты недаром сделал машинку dragable с помощью мышки, - иначе застревает). Да и столкновение у тебя происходит с жестко установленными границами.
А мне было интересна именно эта фраза: "длину экрана мы как будто не знаем, длину машины тоже.". На ней я, как раз, и зациклился.
А, не зная длину (вообще, размеры) машины, довольно проблематично выставить контрольные точки.
насчет застревает-никто не просил чтоб не застревала :)
насчет 'ничего не знаем' - можно и определить(см пример)
насчет жестких границ - тока ссылка на мувик (а что там у него внутри мне все равно)
sergwizard
03.04.2004, 02:23
И это есть хорошо. :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.