Показать сообщение отдельно
Старый 20.02.2006, 21:45   #46
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Смущение

Квази-интеллект
Немного усложним поведение ботов - чтобы игра не была такой "пресной".
Сделаем из бота агр-моба (см LA2).
Сценарий следующий:
Бот шатается по уровню туда-сюда, пока мимо него не промчится игрок. Как только происходит это событие, бот переключается на игрока (со всеми последствиями). В случае если игрок отрывается на безопасное расстояние от преследователя - бот переходи снова к мироному шатанию по уровню.
Нам понадобиться ещё одно поле в типе бота - хендл пивота-вейпоинта.
Type bot
	Field entity
	Field time
	Field Survivability
	Field point
End Type
Правим функцию создания бота:
b\point=CreatePivot()
PositionEntity b\point,x,y,z
Return True
Ну и теперь програмим квази-интеллект:
Function update_bot()
	Rdist#=15
	v#=0.01
	For a.bot=Each bot
	;=
 If a\time=0 a\time=MilliSecs()
 new_time=MilliSecs()
 delta_t=new_time-a\time
 a\time=new_time
	;=
 If EntityDistance(user,a\entity)<Rdist#
 	PointEntity a\entity,user
 Else
 	If EntityDistance(a\entity,a\point)<2
  PositionEntity a\point,EntityX(a\point)+Rnd(-40,40),EntityY(a\point),EntityZ(a\point)+Rnd(-40,40)
 	EndIf
 	PointEntity a\entity,a\point
 EndIf
	;===========
 MoveEntity a\entity,0,0,v#*delta_t
 TranslateEntity user,0,-G#*delta_t,0
	Next
End Function
Rdist# отвечает за расстояние, на котором бот переключается на игрока.
Рассмотрим подробнее:
If EntityDistance(user,a\entity)<Rdist#
Если расстояние до игрока меньше критического - время действовать.
PointEntity a\entity,user
"наводка" на игрока.
Если же игрока рядом нет, то
If EntityDistance(a\entity,a\point)<2
Бот подошёл к контрольной тчке достаточно близко - пора её сменить
PositionEntity a\point,EntityX(a\point)+Rnd(-40,40),EntityY(a\point),EntityZ(a\point)+Rnd(-40,40)
в любом случае - наводим бота на точку:
PointEntity a\entity,a\point
А дальше - дело техники
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием