![]() |
|
||||||||||
|
|||||
|
Цитата:
то о чем ты спрашиваешь (как определить столкновение) - совсем другая история.. вариантов решения много, универсальный, думаю, никто тебе не предложит: ищи по форуму (обсуждалось неоднократно), посмотри у Нокса статью на эту тему |
|
|||||
|
Возможно я просто плохо формулирую что у меня не выходит...
ССылка хорошая... Вот пример... silin, напишите там всего 1-3 строчку, чтоб передавалось... так думаю быдет проще... (ракуты оранжевые, таскаются мышкой по танкам ) ![]() А то я честно говоря не понимю как это сделать... |
|
|||||
|
Для чего оба класса наследовать от MovieClip? Наследуй по тому принципу, что показал wvxvw. Определи у них метод, к примеру,
Все созданные объекты заносишь в массивы, и при движении (или нужном тебе другом событии), бегаешь по массиву (а еще лучше по принципу сетки, как сказал _etc) и проверяешь HitTest'ом кто с кем столкнулся.
|
|
|||||
class Tank extends MovieClip {
static var list=[];
function Tank(num:Number) {
list.push(this);
}
function onClash(mc){
trace("столкновение танк:"+_name+"/ ракета:"+ mc._name);
}
}
class Raketa extends MovieClip {
static var num:Number = 0;
var par;
function Raketa() {
par = num++;
onPress = startDrag;
onRelease=stopDrag;
}
function onEnterFrame(){
for(var i in Tank.list){
if(hitTest(Tank.list[i])){
Tank.list[i].onClash(this);
break;
}
}
}
}
for (var i = 0,level = 0; i<10; i++) {
attachMovie("ra", "ra"+i, level++, {_x:i*50, _y:0});
attachMovie("tank", "ta"+i, level++, {_x:i*50, _y:200});
}
здесь, собственно, иллюстрация механизма в самом примитивном раскладе, все работает, но не эффективно, потому как каждой ракете приходится перебирать весь список танков.. если, например, положить танки в одтельный мувик, то проверять весь список придется только при хиттесте ракеты с этим общим мувиком..и т.д. и т.п. (сетка, структура, прочие уловки, о чем тебе и толкуют wvxvw, __etc,Sneg), но в этом случае существенный нюанс еще в соотношениях габаритов ( можно ли смотреть ту же ракету как точку, т.е. проверять хитТест с ее _x,_y), потому как такой подход требует hitTeat(x,y,true), а не hitTest(mc).. нюансов много.., но смысл надеюсь ясен Последний раз редактировалось silin; 21.10.2006 в 20:43. |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 149
|
Дополнительный аспект.
мне интересно, а что будет если скорость ракеты довольно высокая - в первом кадре она отобразится в х1, в следующем (x3 = х1+rocket.speed), а сам танк при этом находится в х2 (между х1 и х3). Тогда хит-тест столкновение не зарегистрирует. предполагается такое количество одновременно двигающихся объектов? Или их все-таки будет достаточно мало, чтоб можно было, как минимум, отличить танк от ракеты? Потому, я не думаю, что будут проблемы с тормозами при прохождении циклов в поиске столконовений. |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 149
|
именно, silin. На это я хотел обратить внимание автора темы.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 21:02. |
|
|
« Предыдущая тема | Следующая тема » |
|
|