|
|
|||||
Регистрация: Feb 2012
Сообщений: 68
|
Помогите с алгоритмом поиска пути!
Новая проблема...пытаюсь реализовать данный алгоритм на AS 3.0, но в некоторых местах не пойму что имел ввиду автор.
источник: http://xitri.com/2008/09/22/simple-e...#comment-78710 Я нк пытаюсь сделать на всем готовеньком, вы меня поймите, но просто просидел уже не один час и зашел в тупик честно говоря. Буду очень рад если найдется ктото, кто поможет. Вот собственно сам код: step = 2; onEnterFrame = function(){ var dx = _xmouse - man._x; var dy = _ymouse - man._y; //Направление (угол) к цели var angle = Math.atan2(dy, dx); var dist = Math.sqrt(dx*dx + dy*dy); if(dist > step) { //пробуем пройти напролом tgtX = man._x + step * Math.cos(angle); tgtY = man._y + step * Math.sin(angle); if (!path.hitTest(tgtX, tgtY, true)){ //напролом не получилось, вычисляем базовое направление var dAngle = dAngleRadian(direction, angle); workAngle = angle + dAngle*.8; //Шаг поворота - 10 градусов for(var i = 0; i < 360; i += 10) { for(var j = -1; j <= 1; j += 2) { var a = workAngle + radian(i) * j; var tempX = man._x + step * Math.cos(a); var tempY = man._y + step * Math.sin(a); if (path.hitTest(tempX, tempY, true)) { //точка выхода найдена. Запоминаем ее и прерываем цикл tgtX = tempX; tgtY = tempY; break; } } } } var timeDx = tgtX - man._x; var timeDy = tgtY - man._y; //направление движения direction = Math.atan2(timeDy, timeDx); var dAngle = dAngleDegree(direction*180/Math.PI, man._rotation); //поворячиваем клип к направлени движения на 5-ю часть man._rotation += dAngle * .2; man._x = tgtX; man._y = tgtY; man.play(); } else { //стоим man.gotoAndStop(5); } } function dAngleRadian(a1, a2) { var da = a1 - a2; if (da > Math.PI) { da = -Math.PI*2 + da; } else if (da < -Math.PI) { da = Math.PI*2 + da; } return da; } function dAngleDegree(a1, a2) { var da = a1 - a2; if (da > 180) { da = -360 + da; } else if (da < -180) { da = 360 + da; } return da; } function degree(a) { return a / Math.PI * 180; } function radian(a) { return a / 180 * Math.PI; } |
|
|||||
Регистрация: Feb 2012
Сообщений: 1,540
|
Не сможешь.
hitTest теперь нету в as3. Лучше начни с малого... |
|
|||||
Регистрация: Feb 2012
Сообщений: 68
|
зато есть hitTestPoint и hitTestObject,
это не первое что я пишу на AS3, но просто первая игра с подобием искусственного интеллекта.... конкретно мне непонятны вот эти строчки: тут direction чем отличается от angle, и откуда этот дирекшн берется вообще непонятно. |
|
|||||
посмотрите вот это Поиск пути (pathfinding) и по - хорошему еще вот это обязательно Поиск пути
__________________
местонахождение |
|
|||||
Регистрация: Feb 2012
Сообщений: 68
|
СлаваRa, спасибо. отличные статьи. обязательно надо изучить
Добавлено через 1 час 4 минуты всетаки я был бы очень признателен, если бы кто-нибудь мне разъяснил эти 2 строчки что я описал выше.... алгоритм заработал, но не совсем корректно, с "подергиваниями", когда юнит обходит препятствие... Добавлено: Если сделать поиск пути только например по часовой стрелке то все идет гладко, для небольших препятствий это подойдет....но если стена например или сложные какие фигуры, то это выглядит глупо. как это решить еще не придумал Последний раз редактировалось ashIndie; 25.02.2012 в 03:56. |
Часовой пояс GMT +4, время: 09:44. |
|
« Предыдущая тема | Следующая тема » |
Теги |
игра , интеллект , поиск пути , Столкновения |
Опции темы | |
Опции просмотра | |
|
|