AI часть 1
[ Поделиться ]
[ Спасибо! ]
|
13:58
Тема сложная , и развивать её придется на несколько коротких уроков.На каждый урок мы будем разбирать различные случаи применения самого разного AI. В этой части мы рассмотрим AI противника который нас преследует и пытается убить. Пригодится например в погонях.В целом это зависит от вашей фантазии. Прежде чем писать отзыв дочитайте урок до конца. Все мои уроки строятся по одной схеме, для начала я по-шагам рассказываю что делать для того чтобы добиться правильного, работоспособного результата.Затем дабы не возникало вопросов я в конце урока объясняю что же мы черт побери сделали, даю пояснения коду и всем тем действиям что мы совершали на протяжении всего туториала. Так же изволю себя, предупредить что в этом уроке будет использоваться терминология которая вам может быть неизвестна, дабы избежать таких казусов я буду прикреплять внизу статьи ссылки на другие мои уроки, где есть пояснения данным терминам. Весь материал который прописан в данной статье был протестирован на двух версиях движка и гарантированно работоспособный , если у вас возникли неполадки в результате работы это только ваша вина, флуд в теме будет удален.
Приступим к самому уроку - поехали!
В этом уроке мы будем работать с объектами :
Car (x2)
Car AI
Script
Projectile
Right Body
Cam Chase
Terrian
gForce
Для начала как хотим расставляем Terrian, затем добавляем две Car,добавляем Car AI. Теперь вариативность закончилась. Для того чтобы затем не возникало путаницы мы переименовываем вторую Car в Car(Police) допустим.В нашей нынешней Car(Police) в настройках убираем галочку со всех Controls оставляя только Working at Start.Добавляем объект Projectile и ставим его над нашим Car(Police).Под Car(Police) создаем сколько захотим Right Body - но есть условие, объект Right Bodyдля корректной работы Physics обязательно должен быть Ball.И в настройках RightBody ставим галочку на Use bounding sphere as body и ниже в параметре Total mass ставим 1.Соединяем Projectile со всеми Right Body и с Car(Police).В настройках Projectile ставим параметры Car(Police) как parnet , а наши Right Body как Projectile.Затем параметр Projectile velocity изменяем индивидуально, желательно от 50 до 200 , от этого зависит сила projectile и projectile lifetime параметр тоже ставим но уже от 1 до 2 желательно. И на всех параметрах ставим галочки.
Теперь создаем Script и прописываем следующие параметры кода:
Код
void Main()
{
Vector3 scanOrigin;
Vector3 scanDirection;
float scanLength;
Vector3 contactPoint;
Vector3 contactNormal;
Quaternion cameraOrientation;
scanLength = 1000;
iObjectLocation(OBJ_0,scanOrigin);
iObjectOrientation(OBJ_0,cameraOrientation);
iVectorRotate(scanDirection,Vector3(150,170,scanLength),cameraOrientation);
if (iObjectScan(OBJ_44,scanOrigin,scanDirection,0.005,contactPoint,contactNormal))
{
iObjectStart(OBJ_22);
}
else
{
iObjectStop(OBJ_22);
}
}
{
Vector3 scanOrigin;
Vector3 scanDirection;
float scanLength;
Vector3 contactPoint;
Vector3 contactNormal;
Quaternion cameraOrientation;
scanLength = 1000;
iObjectLocation(OBJ_0,scanOrigin);
iObjectOrientation(OBJ_0,cameraOrientation);
iVectorRotate(scanDirection,Vector3(150,170,scanLength),cameraOrientation);
if (iObjectScan(OBJ_44,scanOrigin,scanDirection,0.005,contactPoint,contactNormal))
{
iObjectStart(OBJ_22);
}
else
{
iObjectStop(OBJ_22);
}
}
Соединяем Script с Car и Car(Police) а так-же с Projectile.В настройках Projectile устанавливаем Script как Projectile.Ставим над нашим Car - Cam Chase , и добавляем gForce.Соединяем наш Car со всеми Right Body. Соединяем gForce со всеми Right Body и с Car,Car(Police).Соединяем Car AI с Car(Police) и с нашей Car. В настройках Car AI ставим нашу Car как Objective/Target,а вражеский Car(Police) как Drivable vehicle.
Как я и обещал - теперь пояснения:
Что происходит?
Как только мы запускаем проект по средствам объекта Car AI в котором мы установили нашу машину как директиву/цель вражеская машина преследует нас через Car AI. Благодаря скрипту вражеская машина находит нас на расстоянии 1000 метров
Код
scanLength = 1000;
И при входе в более узкий радиус
Код
iVectorRotate(scanDirection,Vector3(150,170,scanLength),cameraOrientation);
if (iObjectScan(OBJ_44,scanOrigin,scanDirection,0.005,contactPoint,contactNormal))
{
if (iObjectScan(OBJ_44,scanOrigin,scanDirection,0.005,contactPoint,contactNormal))
{
Начинает задействовать соединенный с ней объект снаряда (Projectile). Этот объект разгоняет частицы твердых тел (Right Body), которые мы использовали за место патронов , и "выталкивает" их с силой которую мы указали в
Цитата
Projectile Velocity
И она варьировалась от 50 до 200 м/с.Если мы устанавливали время действия Projectile (projectile lifetame) как 2 то вражеский выстрел выглядел как например автоматная очередь. Благодаря тому что мы соединили все физические объекты с нашей Car то мы можем получить правильный результат в виде переворота машины от выстрела. Итого мы имеем уже неплохую погоню.Возможно позже добавлю пример. Это был первый случай использования AI,в этом уроке мы узнали как использовать AI для стрельбы из машины. В следующем уроке мы будем разбирать AI для "зомби". А так же разберем случаи "смерти" мобов и нас соответственно.
Основные параметры и их пояснения в начале статьи ------ Здесь
Если вы новичок то здесь самые начальные параметры и их пояснения ------ Здесь
Некоторые пояснения в F.A.Q ------ Здесь
Категория: 3D RAD | Просмотров: 3864 | Добавил: _¿_ (03.01.2013) | Рейтинг: 5.0/2 |
HTML ссылка на материал: BB ссылка на материал: |
Всего комментариев: 0 | |