Просмотр полной версии : Гонки. Вид сверху
Подскажите, пожалуйста
как сделать перемещение объекта по определенному пути (Игра "гонки")
как образом отслеживать передвижение по дороге, и "непередвижение" по газону?
думала реализовать с помощью клеточного мира, но карта слишком большая, дорога поворачивает сглаженно, без прямых углов
можно было бы сделать мельчайшие клетки, но это громоздко, и в общем плохо
Просто проветять пересечение с поточечным перебором. При пересечении машинки и газона - уменьшается скорость.
я наврено все таки подожду , возможно есть люди которые знают действительно хороший вариант реализации этой идеи. В свое время я делал следующим образом, рисовал клип, можно сказать точная копия дороги, и делал его невидимым. У машинки внутри было 2-3 клипа как точки для столкновений(одна на носу другая сзади и по бокам возможно), выводил координаты этих клипов на ружу при помощи localToGlobal и делал hitTest и этой невидимой дорогой. Как токо одна из опор давала сбой а именно е хиттест вернул false значит ктото не туда едет :)
а каким образом понять какая точка на 5 пикселей впереди? если у меня одна сплошная картинка - дорога и газон
надо накладывать дополнительный объект - дорогу, и его проверять на hitTest с крайней точкой автомобиля??
а ты сделала для начало машинку, которая знает где у ней перед где зад?
я всегда считала hitTest лажей, ведь столкновение все равно будет с квадратной областью, а значит может произойти и на газоне
т.е. дырка от бублика тоже будет сталкиваться с автомобилем, и с любым из его внутренних мувиков
перебор точек - тоже не понятно - с точкой автомобиля сравнивать все точки экрана? комп зависнет
ой ой кажется поняла, я совсем забыла что еще бывает хиттест с точкой
спасибо
я всегда считала hitTest лажей, ведь столкновение все равно будет с квадратной областью
у hitTest есть три параметра x y и флаг который определяет с чем считать столкновение. Сграницами клипа или только с тем что нарисовано внутри него. Главное всё правельно описать :)
перебор точек - тоже не понятно - с точкой автомобиля сравнивать все точки экрана? комп зависнет
Я делал игры где поточечный перебор использовался для области в 5 раз превышающей размер экрана, причом таких проверок было по 7-8 сразу, и ничего невисло.
Советую попробывать если нужна функция поточечного перебора, могу дать.При пересечении клипа "car" и клипа "gazon" скорость уменьшается.
И еще, камера будет следовать за машинов, или в области видимости будет сразу вся дорога?
камера следует за машиной
фактически буду двигать карту, навстречу машине
интересно, а можно задать объекту двигаться только по белым точкам?
BitmapData!!! на форуме есть куча постов по теме пересечения не прямоугольных объектов при помощи BitmapData
2 zafod тыбы сразу ссылку бы приложил, я бы тоже почитал)
====
вот нашел ссылку на рускоязычный хэлп в подписи одного из модераторов
bitmapData
http://help.inils.ru/flash8/
токо вот вопрос, как его применить по назначению или для решения задачи которой тут обсуждается :)
Наверно есть более лучшие способы проверки, но я знаю только 1 :
Сначало создаёш вот эту функцию
var arrCords:Array = new Array();
function hit(clip1:MovieClip, clip2:MovieClip) {
arrCords = [];
var checkingClip:MovieClip;
var secondClip:MovieClip;
if (clip1._width*clip1._height>=clip2._width*clip2._height) {
checkingClip = clip2;
secondClip = clip1;
} else {
checkingClip = clip1;
secondClip = clip2;
}
for (var i = checkingClip._x-checkingClip._width/2; i<=checkingClip._x+checkingClip._width/2; i++) {
for (var j = checkingClip._y-checkingClip._height/2; j<=checkingClip._y+checkingClip._height/2; j++) {
if (checkingClip.hitTest(i, j, true) && secondClip.hitTest(i, j, true)) {
arrCords.push({x:i, y:j});
}
}
}
if (arrCords.length == 0) {
return false;
} else {
return true;
}
}
А дальше пользуешься как обычным хиттестом.
Например проверить пересечение клипов mc1 и mc2 пишешь следующиё код
if (hit(mc1,mc2)) {
trace ("OK");
}
А дальше сами разбирайтесь )
http://www.flasher.ru/forum/showthread.php?t=84135
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.