Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 11.12.2011, 01:28   #1
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
Плохо "way finding", пасаны! :)

Кто Меня встречал на форуме в других темах тот знает что Я замышляю создать игру которая "перевернет Ваши стереотипы"
Дошел Я до ИИ
А конкретнее до поиска пути
Игра простая - можно сказать двухмерная (физика вычисляется в двух измерениях)
Есть юниты
На пути к игроку стоят препятствия
В мире нету никаких сложных лабиринтов - просто попадаются астероиды или другие юниты состоящие из компаундов
Думал проще всего сделать поиск с помощью рэйкаста - попробовал реализовать - первая попытка увенчалась неудачей) Но и с ней было видно что это дело достаточно ресурсоемко
Выходом есть разве что обновлять путь раз-два в секунду и еще поставить его просчет на отдельный поток - но все же...
Интересуюсь - подскажите наиболее оптимальный способ)
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
(Offline)
 
Ответить с цитированием
Старый 12.12.2011, 11:35   #2
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: "way finding", пасаны! :)

Spherecast можно юзать,или колайдер в тригерном режиме,или RayCast,смотря для чего
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 13.12.2011, 01:10   #3
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
Смех Ответ: "way finding", пасаны! :)

Короче в итоге сделал предельно просто: посылается луч и в цикле немножко сдвигается то в один бок то в другой - как-то-так:
bool way_find_switch = false;//переключатель - указывает в какую сторону на данный момент двигаться
usi way_find_turn = 5;//на сколько градусов прибавляется поворот с каждым проходом в цикле
for (; way_find_turn <= 180; ){
	xPointEntity(way_piv, PLAYER->poi);
	if (!way_find_switch){xTurnEntity(way_piv, 0.0f, way_find_turn, 0.0f);}//смотрим вправо
	if (way_find_switch){xTurnEntity(way_piv, 0.0f, -way_find_turn, 0.0f); way_find_turn += 5;}//и влево + плюсуем поворот
	xTFormVector(0.0f, 0.0f, see_range - 3, way_piv, 0);//смотрим
	xPhysicsRayCast(xEntityX(way_piv), xEntityY(way_piv), xEntityZ(way_piv), xEntityX(way_piv) + xTFormedX(), xEntityY(way_piv) + xTFormedY(), xEntityZ(way_piv) + xTFormedZ(), false);//присматриваемся)))
	way_find_switch = !way_find_switch;
	if (xPhysicsGetHitEntity(0) != 0){
		if (xPhysicsGetHitEntity(0) == PLAYER->poi){
			find = 1;
			//игрок найден!)
			break;
		}
		else {
		}
	}
	else {//нашли ближайший обход)
               }
}
С какой стороны ближе мы перестанем натыкатся на преграду - в эту сторону и двигаемся
Короче фигня но пока сойдет


ЗЫ: А можно по-подробнее о Spherecast и о триггерном состоянии? Собсно интересует их реализация в ксорсе)
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 15:21.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com