GameGuru. Поднятие объектов Для начала соберите сцену как показано на видео, чтобы можно было передвигать бочку, на которой висит скрипт, который напишем чуть позже. Для начала нам надо создать скрипт carry_object.lua и объявить локальную переменную cmode, отвечающую за состояние объекта: в воздухе или на земле.
Код
local cmode = 0
Далее мы берем обязательную проверку на дистанцию игрока до объекта и проверка состояния объекта. Это нужно для того, чтобы определить можно ли поднять объект. И там же сразу вставляем проверку на нажатие "E".
Код
PlrDist = GetPlayerDistance(e) if (PlrDist < 100) and (cmode == 0) then Prompt("Press E to carry") if g_KeyPressE == 1 then cmode = 1 end end
Теперь, когда объект получил состояние в воздухе, то мы должны рассчитать его позицию и угол наклона, относительно игрока. Для этого смотрим сначала угол наклона игрока в радианах, а потом просто через синус(для X координаты) и косинус(для Z координаты) задаем новую позицию для бочки. Также добавляем коэффициент(70), показывающий степень удаление объекта от игрока.
Код
if (cmode == 1) then new_y = math.rad(g_PlayerAngY) prop_x = g_PlayerPosX + (math.sin(new_y) * 270) prop_z = g_PlayerPosZ + (math.cos(new_y) * 270) CollisionOff(e) SetPosition(e , prop_x, g_PlayerPosY , prop_z) RotateToCamera(e) CollisionOn(e) Prompt("Release E to drop") if g_KeyPressE == 1 then cmode = 0 CollisionOff(e) SetPosition(e , prop_x , g_PlayerPosY , prop_z) CollisionOn(e) end end
Весь код:
Код
local cmode = 0
function carry_object_init(e) cmode = 0 end
function carry_object_main(e) PlrDist = GetPlayerDistance(e) if (PlrDist < 100) and (cmode == 0) then Prompt("Press E to carry") if g_KeyPressE == 1 then cmode = 1 end end if (cmode == 1) then new_y = math.rad(g_PlayerAngY) prop_x = g_PlayerPosX + (math.sin(new_y) * 270) prop_z = g_PlayerPosZ + (math.cos(new_y) * 270) CollisionOff(e) SetPosition(e , prop_x, g_PlayerPosY , prop_z) RotateToCamera(e) CollisionOn(e) Prompt("Release E to drop") if g_KeyPressE == 1 then cmode = 0 CollisionOff(e) SetPosition(e , prop_x , g_PlayerPosY , prop_z) CollisionOn(e) end end end
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «GameGuru. Перетаскивание объектов», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]