3d rad как сделать игру


3d rad как сделать игру

Меню сайта Наш опрос

Развернуть Чат

-- 15 сек 30 сек 1 мин 2 мин

200

Статистика

Сейчас на сайте: 1

Анонимы: 1

Зарегистрированные: 0

    Учись. Твори. Постигай

Создадим свой FPS

Попробуем создать свой шутер от первого лица, со всеми приходящими способностями для игры.

Здесь написано поэтапно как создать свой шутер.

Прежде Всего надо задать клавиши:
Для этого добавьте ConfigureControls (не с чем не соединяем)
и открыв можно переписать любую кнопку "под себя". При запуске проекта первый раз нажмите кнопки Ctrl + Shift + F9 там будут писать ваши записаные кнопки, затем вам просто нужно будет и их нажимать которые указываются.


Добавим:
Skybox. // Небо.
Terrain. // Наша платформа, на которой собственно и будут происходить действия.
G-Force. // Гравитация.
Cam1StPerson. // Персонаж от первого лица.
Velocity. // Какая то стрелка, будет использоваться для прыжка.
EventOnInput. // Кнопка для прыжка.
EventOnContact. // Связь между персонажем и землей (далее опишем).
EventTimer. // Таймер (Объясним потом зачем он).

-----------------------------------------------------------------------------------------------------------


Теперь соединим всё:
Cam1StPerson с G-Force, Terrain, Velocity и EventOnContact.
Velocity с EventOnInput.
EventOnInput с EventTimer, Velocity, EventOnContact.

---------


В Velocity настраиваем так:
Working at start = Отключаем.
Seed or Spin = 10. // Сила прыжка.

Relationships:
Cam1StPerson = RECIPIENT
EventOnInput = IGNORE

---------


В EventOnInput настраиваем так:
Parameters: = [Задайте любую клавишу] // Эти клавиши мы задавали.

Relationships:
Velocity = START ON INPUT
EventOnContact = IGNORE
EventTimer = IGNORE

---------


В EventOnContact настраиваем так:

Relationships:
Terrain = MONITOR
Cam1StPerson = MONITOR
EventOnInput = START ON CONTACT

---------


В EventTimer настраиваем так: // Он для того что бы блокировать попытку двойного пыжка
Parameters: = [0.1]=[0.2]
[0.1]=[0.2]
Repetitions: = 999999999 //Так то любое большое число.

Relationships:
EventOnInput = STOP
Вот и все, наш персонаж теперь прыгает. при нажатии кнопки которую вы задали.


Добавим:
SkinMesh. // Будет являтся нашим скином рук.
Projectile. // Штука при помощи которой мы будем стрелять.
RigidBody. // Это типа пуля
RigidBody. // И это типа пуля
EventOnInput. // Кнопка для стрельбы
Sprite. // Прицел
Script. // Для Фиксации скина
SoundEffect. // Для имитации звука выстрела

-----------------------------------------------------------------------------------------------------------


Теперь соединим всё:
SkinMesh с Projectile, Script.
Projectile с RigidBody,RigidBody, EventOnInput, SkinMesh.
EventOnInput с SoundEffect, Projectile.
Script c Cam1StPerson (Который использовали для первого урока) и SkinMesh.

---------


В Projectile настраиваем так:
Parameters:
Projectile Velocity = 150 // Можете любое на свое усмотрение - это скорость пули.
Projectile LifeTime = 1 // Время жизни пули.

Relationships:
RigidBody = PROJECTICLE
RigidBody = PROJECTICLE
EventOnInput = IGNORE
SkinMesh = PARENT

---------


В EventOnInput настраиваем так:
Parameters:
[ Задайте Любую кнопку]

Relationships:
Projectile = START ON INPUT
SoundEffect = START ON INPUT

---------


В SoundEffect настраиваем так:
Прежде всего выберете звук выстрела или что у вас там есть.
Parameters:
[color=purple]Sound Frequency = 22050 // Можно и на ваше усмотрение
Sound Volume = 1 //Это громкость
Обе галочки убираем.

---------


В Script пропишем:

Code

Quaternion DeltaOrientation;
Vector3 DeltaLocation;
void Main()
{
  Quaternion cameraOrientation;
  Vector3 cameraLocation;
  Quaternion orientation;
  Vector3 location;
  if (iInitializing())
  {
  iQuaternionFromEulerAngles(DeltaOrientation,0,0,0,"xyz"); //Вращение скина
  DeltaLocation = Vector3(1,-0.7,1.4); //Положение в камере
  }
  iObjectOrientation(OBJ_??,cameraOrientation); // ?? - Задайте номер камеры
  iObjectLocation(OBJ_??,cameraLocation); // ?? - И здесь номер камеры
  Quaternion objectOrientation;
  Vector3 objectLocation;
  iQuaternionMultiply(objectOrientation,DeltaOrientation,cameraOrientation);
  iVectorRotate(objectLocation,DeltaLocation,cameraOrientation);
  objectLocation += cameraLocation;
  iObjectOrientationSet(OBJ_??,objectOrientation); // ?? - Здесь укажите номер скина
  iObjectLocationSet(OBJ_??,objectLocation); // ?? - И здесь тоже укажите номер скина
}

---------


Двум RigidBody Задаем одинаковые параметры:
Вначале не забудьте выбрать свою модель или же используйте стандартный шар.
Первым делом надо поставить галочку в разделеPhysics:
Use bounding sphere as body // для того что бы мы могли менять размер.
Position:
Scaling X. Y. Z. = [0.1] [0.1] [0.1] // Можете меньше например 0.05 или 0.03 - Размер пули.
Вот и все, наш персонаж теперь может и стрелять.
Добавим:
SoundEffect // Звук перезарядки будет
Counter // Подсчет патронов
Counter 1 // Подсчет Обойм
ValuePrint // Отображение патронов
ValuePrint 1 // Отображение обойм
EventOnValue // Такая ерунда - она будет задерживать выстрелы при 0-м балансе
EventOnValue 1 // Такая же как выше
EventOnInput // Кнопка перезарядки
TextPrint // Будет писать что патронов нет
TextPrint 1 // Будет писать что кончились обоймы

-----------------------------------------------------------------------------------------------------------


Теперь соединим всё:
SoundEffect с EventOnInput.
Counter с ValuePrint 1, EventOnValue 1, EventOnInput, EventOnInput (со второго урока).
Counter 1 с ValuePrint, EventOnValue, EventOnInput.
EventOnValue с Counter 1, EventOnInput, TextPrint 1.
EventOnValue 1 с Counter, TextPrint, EventOnInput (со второго урока).

---------


В Counter настраиваем так:
Parameters:
Initial value = 50 // Можете любое на свое усмотрение - это кол-во пуль на обойму.
Increment = -1 // по сколько пуль отнимать при выстреле.

---------


В Counter 1 настраиваем так:
Parameters:
Initial value = 5 // Можете любое на свое усмотрение - это кол-во пуль на обойму.
Increment = -1 // по сколько пуль отнимать при выстреле.

---------


В ValuePrint настраиваем так:
Relationships:
Counter 1 = Counter value is the value to PRINT

---------


В ValuePrint 1 настраиваем так:
Relationships:
Counter = Counter value is the value to PRINT

---------


В EventOnValue настраиваем так:
Relationships:
EventOnInput = STOP
Counter 1 = Counter value is the value to PRINT
TextPrint 1 = SHOW

Continuous detection = Включить

---------


В EventOnValue 1 настраиваем так:
Relationships:
EventOnInput(со второго урока) = STOP
Counter = Counter value is the value to PRINT
TextPrint = SHOW

Continuous detection = Включить

---------


В EventOnInput настраиваем так:
Parameters:
[ Задайте Любую кнопку] // Кнопка перезарядки

Relationships:
Counter = RESET ON INPUT
Counter 1 = START ON INPUT
SoundEffect = START ON INPUT
TextPrint = HIDE ON INPUT
EventOnValue = IGNORE
EventOnInput (со второго урока) = START ON INPUT

---------


В ValuePrint настраиваем так:
Text:
Visible at start = отключить
Текст = No Ammo [R] // можете любой по желанию

---------


В ValuePrint 1 настраиваем так:
Text:
Visible at start = отключить
Текст = No Mags // можете любой по желанию
Все теперь при стрельбе будет подсчитываться кол-во патронов и обойм, при 0 балансе стрлять не сможет
Добавим:
Character. // Это склеит нашего Бота.
SkinMesh. // Скин Бота.
RigidBody. // Сфера для ходьбы Бота.
Script. // Здесь пропишем Функции для Бота.
Counter. // Подсчет HP Бота.
EventOnValue // Даст знать что Бот готов(Убит)
EventOnLocation. // Радиус поражения для Бота
Projectile. // Оружие.
RigidBody 1. // Пуля Бота. Можете несколько
EventTimer. // Время для перерождения Бота.
ValuePrint. // Покажет на экране сколь у бота HP.

-----------------------------------------------------------------------------------------------------------


Теперь соединим все:
Character с SkinMesh, RigidBody, Script, EventOnValue, (Cam1StPerson, Terrain) - C Предыдущих уроков.
SkinMesh с EventOnLocation, Script, Character, Projectile.
RigidBody с Character, EventOnValue, EventTimer, G-Force, Terrain, Cam1StPerson. - Ну и со всем чего он может касаться.
Script с Character, SkinMesh, Projectile, Cam1StPerson.
Counter с EventOnLocation, EventOnValue, EventTimer, ValuePrint.
EventOnLocation с Counter, SkinMesh, (RigidBody - Которые Игрок использует в качестве пуль "Пред.Уроки" Взять все).
EventOnValue с Counter, Character, EventTimer, RigidBody.

---------


В Character настроим так:

Controls:
Working at strat = оставим включенным
Кнопки для управления = Галочки снимем.

Relationships:
SkinMesh = SKINMESH
RigidBody = SPHERE RIGIDBODY
Script = IGNORE
Cam1StPerson = TERGET
Terrain = TERRAIN RIGIDBODY
EventOnValue = IGNORE

---------


В SkinMesh настроим так:
Подстройте под себя...

---------


В RigidBody настроим так:
Подстройте под себя...

---------


В Script пропишем так:
При вставке скрипта Убедитесь чтоIN_?? и OUT_??Подключены правильно

Code

int AnimationSet = 0;  
int AnimationSetNew = 0;  
Vector3 PlLoc;  
Vector3 NPCLoc;  
void Main()  
{  

  float distance;  
  iObjectLocation(OBJ_??,PlLoc); // Номер Игрока (Cam1StPerson)  
  iObjectLocation(OBJ_??,NPCLoc); // Номер Бота (SkinMesh)  
  distance = iVectorLength(PlLoc - NPCLoc);  

  if (iInitializing())  
  {  
  AnimationSet = 0; // Начальная анимация
  AnimationSetNew = AnimationSet;  
  OUT_?=1; // Должна быть Строка ( Move FWD Input)  
  }  
  else  
  {  
  if (IN_?? > 0.2 && distance <= 25) //25-Дистанция пока он не стреляет. Строка ((IN_??)Animation Time (SkinMesh))
  {  
  AnimationSetNew = 0; // Начальная анимация ходьбы  
  OUT_? = iFloatInterpolate(IN_??,0.2,50,0,50,true); // Должна быть Строка ((OUT_??) Move FWD Input) и Строка ((IN_??)Animation Speed (SkinMesh))  
  iObjectStart(OBJ_88); // Номер Projectile  
  }  
  else  
  {  
  AnimationSetNew = 0;
  OUT_?? = 1; // Должна быть Строка ( Move FWD Input)
  }  

  if (AnimationSetNew != AnimationSet)  
  {  
  AnimationSet = AnimationSetNew;  
  OUT_?? = AnimationSet; // Строка (AnimationSet (SkinMesh))  
  }  
}  
}

---------


В Counter настроим так:
Initial value = 100 // Помните вроде что это?.
Increment = -20 //Поставил большое отнятие жизни, как никак если ты главный герой, то мочишь гадов с пары выстрелов. ( можете поставить на свое усмотрение).

---------


В EventOnLocation настроим так:
Excute opposite action on exiting = Ставим галочку(обязательно).
Размер надо прикинуть со скином, это радиус поражения.

Relationships:
SkinMesh = PARENT
RigidBody = CHECK FOR ENTERNING (OFFSET 1) // Эти RigidBody служать пулями( Пред.Уроки)
RigidBody = CHECK FOR ENTERNING (OFFSET 1)// Эти RigidBody служать пулями( Пред.Уроки)
RigidBody = CHECK FOR ENTERNING (OFFSET 1)// Эти RigidBody служать пулями( Пред.Уроки)
RigidBody = CHECK FOR ENTERNING (OFFSET 1)// Эти RigidBody служать пулями( Пред.Уроки)
Counter = SWITCH ON CONDUCTION

---------


В EventOnValue настроим так:

Relationships:
Counter = Counter value is MONITORED
Character = RESET
EventTimer = START
RigidBody = SWITCH

Valu range = Ставим по нолям.

---------


В EventTimer настроим так:
Working at start = Отключим
Start time range = [0] [0] // Через сколько начнет действовать таймер
End time range = [5] [5] // Можете поставить как вам угодно - это через сколько
времени Бот заново возродится, если это вообще надо.

Relationships:
EventOnValue = RESET
RigidBody = RESET
Counter = RESET

---------


В Projectile Настроим так:
Parameters:
Projectile Velocity = [50]// Скорость пули Бота.
Projectile lifetime = [2] // Время жизни пули.

Relationships:
RigidBody = PROJECTILE
SkinMesh = PARENT
Script = IGNORE
Теперь ваш Бот должен следовать за вами, и если вы находитесь от него ближе чем на 25 метров он начинает в вас стрелять. а если вы стреляете в него он умирает и потом заново перерождается.


Добавим:
EventOnLocation // Радиус нашего поражения - подогнать размер на усмотрение
Counter // Подсчет нашей жизни
ValuePrint // Отображалка нашей жизни
EventOnValue // Не даст HP уйти в минус.

-----------------------------------------------------------------------------------------------------------


Теперь соединим все:
EventOnLocation с Cam1StPerson (Пред.Уроки), Counter.
Counter c ValuePrint, EventOnValue.

---------


В EventOnLocation настроим так:
Excute opposite action on exiting = Ставим галочку(обязательно).

Relationships:
Cam1StPerson = PARENT
Counter = SWITCH ON CONDUCTION
RigidBody( Пуля Бота) = CHECK FOR ENTERNING (OFFSET 1)

---------


В Counter настроим так:
Initial value = 100 // Ваша жизнь.
Increment = -2 // Сколько от попадания в вас отнимет.

---------


В ValuePrint настроим так:

Relationships:
Counter = Counter is the value PRINT

---------


В EventOnValue настроим так:

Relationships:
Counter = Counter is value to MONITORED
Value range = [0] [0].
Так же можете задать любое действие при смерти, например ПЕРЕРОЖДЕНИЕ.(RESET)
Ну все, теперь у вас будет отниматься HP при попадании бота. Но если вам не нравиться Подсчет жизни цифрами то Здесь описано как создать шкалу.


Добавим:
Projectile. // Та самая штука которая стреляет.
EventOnLocation. // Радиус поражения.
RigidBody. // Сама типа граната.
Script. // Без комментариев.
EventOnInput. // Кнопка.
Trail. // Простая украшалка, можете не добавлять, но без нее не очень.
G-Force. // Гравитацию используем в качестве бомбы.(Отдачи)
Particles1. // Эффект дыма.
Particles2. // Огонь.
Particles3. // Еще огонь для большего эффекта.
SoundEffect. // Звук взрыва.
EventTimer. // Запуск гранаты.
EventTimer1. // Стоп гранаты.

-----------------------------------------------------------------------------------------------------------


Теперь соединим все:
Projectile с (Скином вашего оружия-возможно из предыдущих уроков), RigidBody, EventOnInput.
EventOnLocation с RigidBody, EventTimer, EventTimer1, RigidBody((Ваш Бот)Пред.Уроки), Counter((Вашего Бота)Пред.Уроки).
RigidBody с Trail, Particles1,Particles2, Particles3, EventTimer1, G-Force(Граната), G-Force(Гравитация), Projectile, EventOnLocation, Script, Ну соединить со всеми RigidBody которые он может задеть.
Script с RigidBody, G-Force(Граната).
EventOnInput с Projectile, Trail, EventTimer.
Trail с RigidBody, EventOnInput, EventTimer1.
G-Force с Script, ((Cam1StPerson)Пред.Уроки), EventTimer, EventTimer1, (RigidBody Бота).
Particles1 с EventTimer, EventTimer1, RigidBody.
Particles2 с EventTimer, EventTimer1, RigidBody.
Particles3 с EventTimer, EventTimer1, RigidBody.
SoundEffect с EventTimer.

---------

В Projectile настроим так:

Parameters:
Projectile velocity = 20
Projectile lifetime = 2.5

Relationships:
SkinMesh(Ваше оружие) = PARENT
RigidBody = PROJECTILE // ваша пуля
EventOnInput = IGNORE

---------

В EventOnLocation настраиваем так:

Working at start = отключаем.

Relationships:
Excute opposite action on exiting = Ставим галочку(обязательно).

RigidBody = PARENT // ваша пуля
EventTimer = IGNORE
EventTimer1 = IGNORE
RigidBody = CHECK FOR ENTERNING (OFFSET 1) //Ваша пуля
Counter(Противника) = SWITCH ON CONDUCTION
Размер подогнать на свое усмотрение

---------

В RigidBody (Граната) настраиваем так:
Размер и тяжесть задайте на свое усмотрение.

---------

В Script настраиваем так:

Code


Quaternion DeltaOrientation;
Vector3 DeltaLocation;
void Main()
{
  Quaternion cameraOrientation;
  Vector3 cameraLocation;
  Quaternion orientation;
  Vector3 location;
  if (iInitializing())
  {
  iQuaternionFromEulerAngles(DeltaOrientation,0,0,0,"xyz");
  DeltaLocation = Vector3(1,-0.3,1);
  }
  iObjectOrientation(OBJ_22,cameraOrientation);
  iObjectLocation(OBJ_22,cameraLocation);
  Quaternion objectOrientation;
  Vector3 objectLocation;
  iQuaternionMultiply(objectOrientation,DeltaOrientation,cameraOrientation);
  iVectorRotate(objectLocation,DeltaLocation,cameraOrientation);
  objectLocation += cameraLocation;
  iObjectOrientationSet(OBJ_0,objectOrientation);
  iObjectLocationSet(OBJ_0,objectLocation);
}

Где OBJ_22 = RigidBody(Граната)
А OBJ_0 = G-Force (Гранаты-Отдача)


Товарищи ShuterMen'ы постараюсь на днях проверить весь раздел по созданию шутера, исправлю ошибки в уроках и выложу нормальный пример, если есть идеи прошу высказывать

Demo

1 2 3 4 5 Категория: Создание шутера | Добавил: -ALEX- (20.09.2012) | Автор: Александр E Просмотров: 5716 | Комментарии: 42 | Рейтинг: 5.0/6 Всего комментариев: 42 1 2 3 4 »

Порядок вывода комментариев: По умолчанию Сначала новые Сначала старые

Пока что первый только успел посмотреть. Всё работает сейчас буду делать третий и второй. smile

0


Куллл biggrin

0


Только бы еще добавил файлы

0


Второй тоже работает отлично, третий только не успел проверить, уж сильно хотелось спать smile

0


блин люди нече не работает кроме первого!

0


у меня 4 урок не работает а так все работает не работает(( helphelp

0


В 5м уроке у меня почему то хп не отнимаются а прибавляются,в чем причина?

0


Надеюсь примеры все же выложите

0


а у кого нибудь есть готовый проект просто у меня 3 и 4 не получились вы бы мне скинули и я посмотрел бы в чем моя ошибка

0


0


1-10 11-20 21-30 31-38

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Используются технологии uCoz Copyright MyCorp © 2018


3d rad как сделать игру

3d rad как сделать игру

3d rad как сделать игру

3d rad как сделать игру

3d rad как сделать игру

3d rad как сделать игру

Похожие новости: