И снова Здравствуйте. Давайте сразу перейдем к делу.Если вы делали всё, как описано в прошлой статье, то у вас должен был получиться мини проект , в котором можно (напоминаю) подобрать "вещь", и это отразится у нас в инвентаре в виде "иконки". В этой статье, мы доделаем наш проект, добавив в него "защиту",т.е. мы будем "нажимать" на нашу иконку,и у нас будет появляться (например) на голове шлем. И так приступим: Для начала зайдите в редактор(3d rad),нажмите project -open и откройте проект под названием ViewLockedSkinmesh.Когда проект откроется в левом "столбце" найдите Script: view-locked mesh manager,откройте его , выделите текст "скрипта",и скопируйте его(функция ,COPY). Затем закройте этот проект,и откройте "наш" проект (new inventory). (Немного "разъяснения". Теперь у нас есть очень нужный скрипт ,который поможет нам в дальнейшем,а как , вы увидите сами.) Когда вы откроете "наш" проект, сразу создайте SCRIPT,зайдите в него, и вставьте скопированный текст(текст скрипта*). Переходим к реальным действиям, соедините" галочкой " SCRIPT с CamChase. Создайте дополнительно SkinMesh , и тоже соедините его "галочкой" со SCRIPT-том. Дополнительно зайдите в настройки SkinMesh нажмите "Change",высветится окошко, в этом окошке найдите Andro ,нажмите на него, и потом нажмите "открыть"(open) , и закройте настройки (кнопкой "ОК"). Желательно SkinMesh, куда-нибудь "спрятать", под "землю" ,или в "облака",вообщем сделать так, чтобы ни одна из наших камер не увидела его. Теперь зайдите в настройки SCRIPT. Найдем строчку отмеченную мною на "картинке"- iObjectOrientationSet(OBJ_22,objectOrientation); iObjectLocationSet(OBJ_22,objectLocation); Заменим OBJ_3 на OBJ_22.Почему 22? Да потому что номер объекта андро (в моем случае) 22(посмотрите на картинку в "графе" OBJ). А в данной строчке мы должны вписать номер объекта(предмета, это может быть либо SkinMesh либо RigidBody)Этот "скрипт" отвечает за Ориентацию(расположение*) объекта, перед камерой! В этом SCRIPT нужно следить за двумя строчками ,первая это та ,которую я показал, а вторая это вот, выделенная мною строчка iObjectOrientation(OBJ_0,cameraOrientation); iObjectLocation(OBJ_0,cameraLocation); В этой строчке, всегда должен быть номер объекта "Камера". Мучаем дальше "текст" "Скрипта". Поставьте себе такие же настройки как у меня, либо сделайте свои. iQuaternionFromEulerAngles(DeltaOrientation,0,180,0,"xyz"); Эта строчка отвечается за повороты нашего SkinMesh.Меняйте только "цыфорки". DeltaLocation = Vector3(0,-1,2); Эта строчка отвечает за положение в пространстве , по отношению к "камере"*) Все... если вы выставили все настройки, все сделали правильно, то теперь ,когда вы запустите "игру" в редакторе,и вызовете инвентарь кнопкой, то вы увидете Andro, который будет идти на месте , если вам это не нравится зайдите в настройки SkinMesh И уберите галочку с Follow at start. Если вы все сделали правильно у вас должно получится вот так: Делаем дальше.Теперь создайте еще один SkinMesh и Script(назовем его NEW SCRIPT). В NEW Script вставьте "текст" прошлого скрипта.Соединим наш NEW Script с CamChase и с недавно созданным SkinMesh. Откроем настройки NEW Script, посмотрите правельно ли написаны строчки,т.е. правильно ли стоят "цыфорки"-(OBJ_22 и OBJ_0).Сверьте,чтобы все было правильно... (СДЕЛАЙТЕ НОВЫЙ SkinMesh в виде "РЫБКИ") Мучаем "строчки" : DeltaLocation = Vector3(0,0.8,2);(или настраивайте так, чтобы у вас получилось как на "скрине") Это теперь у вас будет появлятся ,при включении инвентаря ( "скин меш " можно заменить на любой другой). Теперь давайте сделаем так, чтобы эта "рыбка" ,появлялась только после того, как мы нажмем на иконку(спрайт). Для этого сделаем следующее : зайдем в настройки нашей "рыбки" уберем галочку с Visible at start. Теперь при нажатие инветаря рыбка появлятся не будет... Теперь создадим EventOnInput(заранее уберите "галочку" с Working At Start) ,соединим наш SkinMesh(или рыбку) с ним,и установите отношение -S/H SWITCH ON LMBUTTON. (Поместите Mouse Detection Area, прям под иконку нашего "шлема") Сам EventOnInput соединим с EventOnInput(который отвечает за включение иконки(спрайта) , который(ая) активируется после того, как мы "подбирем" вещь(SkinMesh)) Теперь ,после того как вы соединил "галочкой" - EventOnInput-ы, зайдите в EventOnInput(отвечающий за "иконку"),и поставьте (взаимоотношения) с EventOnInput(отвечающий за "рыбку" на голове) -Start On Input. Потерпите еще чучуть*) уже почти конец. * создайте sprite(выберите ему вид курсора,эти мы и будем "водить" по инвентарю) в настройках спрайта поставьте Wark as Full-screen mouse pointer.Уберите галочку с Visible At start. Поставьте-Render over texts. Теперь соедините "галочкой" этот спрайт с EventOnInput(который отвечает за спрайт "заднего" фона,или за спрайт инвентаря) и поставьте взаимоотношение - S/H switch on input И попутно соедините его с CamChase Все кульминация : Создайте RigidBody.Создайте Script (вставьте в него наш "любимый" текст,который мы мучали на протяжение все этой статьи,заранее уберите галочку Working At start ). Создайте EventOnContact и EventOnInput Все, работаем дальше. Когда вы вставите "текст" в новый SCRIPT соедините его с RigidBody и с Cam1StPerson. В скрипте укажите (в тексте) значения переменных такие, чтобы [b]RigidBody ,"защищал" Cam1StPerson,ну как бы заслонял ее, вы можете выбирать любое физическое тело(RigidBody) подбирать любой ракурс "защиты", голова, ноги...[/b] SCRIPT -проверьте "настройки" ,заранее уберите галочку c Working at start, напоминаю еще раз, это надо сделать для того, чтобы скрипт не работал с самого начала игры , а только после определенных действий.[/b] Дальше вы должны создать еще один Script так же вставьте в него (тот же самый текст) ,так же соединить его с RigidBody(который вы соединяли с предыдущим СКРИПТОМ) и соединить с той же Cam1StPerson. Только в этом скрипте укажите другие настройки например в строчке - DeltaLocation = Vector3(0,0.8,100);- это мы делаем ложный скрипт...походу дела объясню зачем он.(уберите "галочку" с Working at start) Создайте Switch и соедините его с двумя этими (недавно созданными ) скриптами ... Укажите связь -SECONDARY- на нормальный скрипт(который создан ранее) ,а на наш "ЛОЖНЫЙ СКРИПТ" укажите связь PRIMARY (мы это сделали для того ,чтобы "защита" включалась только при нажатие по иконке, она будет включаться, и на голове нашего Андро будет появляться "рыбка" ) (Найдите нормальный спрайты и скин меши*) Соедините "галочкой" Switch с EventOnInput "Зайдите" в EventOnInput и установите взаимосвязь -Switch on LMBBUTTON. Mouse Detection Area - поставьте на место "иконки"(шлема)(уберите "галочку" с Working at start) Теперь соедините этот EventOnInput с EventOnInput(который отвечает за "иконку"(шлем) и установит связь (START ON INPUT,в EventOnInput который отвечает за "шлем")... Если вы еще помните ,мы создали EventOnContact, соедините его "галочками" с RigidBody(который отвечает за защиту...*я для наглядности взял сплошную "стену" которая защищает меня от любого удара спереди) и с RigidBody(который служит у нас шариком,бьющим Cam1StPerson... В EventOnContact установите связи : RigidBody(который служит защитой ) -Monitor RigidBody ( который служит шариком) - Monitor (HIDE ON CONTACT) ВАЖНО *RigidBody(который служит защитой ) - уберите галочку Display Geometry. * ПРОЕКТ ПОЛНОЦЕННО БУДЕТ РАБОТАТЬ ТОЛЬКО В СКОМПИЛИРОВАННОМ ВИДЕ * МАЛЕНЬКАЯ ПОПРАВОЧКА - Создайте Switch и соедините его с Cam1StPerson и CamChase.Попутно соедините его с EventOnInput( в котором стоит галочка на Working At Start)...кнопка должна быть назначена такая(INPUT CONTROL) , которая назначена на "запуске" инвентаря. Установите связь между Switch и EventOnInput (В EventOnInput) - Start On Input. И в настройках CamChase поставте "галочку" на Rending At Start. |