3D Inventory System
Данную идею я хотел реализовать, после просмотра данного видео:
Но я не хотел делать все как на видео, я хотел сделать вместо HUD'а оружия, само оружие, которое бы вращалось вокруг своей оси. Располагалось бы оно на месте стандартного HUD'a, но вместо него был-бы реальный обьект оружия. Я уже реализовал отрисовку модели на месте HUD, и даже смену его модели, при смене оружия игрока, все-бы хорошо, но я столкнулся с одной проблемой. Когда игрок начинает двигаться, то модель оружия начинает дергаться, и хотя я ставлю позицию модели на событии onClientPreRender (это событие срабатывает перед тем как отрисовать кадр) ничего не выходит. Но я думаю на днях попробовать использовать функцию attachElements, но я еще не знаю как я буду считать относитальные координаты игрока от расположение камеры. Вот скриншот:
На нем Shotgun расположен не там где надо из-за того, что я еще не изменял координаты на те, в которых расположен HUD и это не составит труда, но вот решить тресение объекта, мне покаместь не удалось. Если кому-то надо, вот исходный код этого скрипта на сегодняшний день(клиентский):
Weapons = {
[1]=331,
[2]=333,
[3]=334,
[4]=335,
[5]=336,
[6]=337,
[7]=338,
[8]=339,
[9]=341,
[22]=346,
[23]=347,
[24]=348,
[25]=349,
[26]=350,
[27]=351,
[28]=352,
[29]=353,
[30]=372,
[31]=355,
[33]=356,
[34]=357,
[35]=358,
[36]=359,
[37]=360,
[38]=361,
[16]=362,
[17]=342,
[18]=343,
[39]=344,
[41]=363,
[42]=365,
[43]=366,
[10]=367,
[11]=321,
[12]=322,
[13]=323,
[14]=325,
[15]=326,
[44]=368,
[45]=369,
[46]=371,
[40]=364 }
height,width = guiGetScreenSize()
CurrentWeapon = nil
Rotation = 0
function initialize()
if getPedWeapon(getLocalPlayer()) ~= 0 then
CurrentWeapon = createObject(Weapons[getPedWeapon(getLocalPlayer())],0,0,0)
end
end
function setPosition()
if CurrentWeapon then
local x,y,z = getWorldFromScreenPosition(height*0.8,width*0.5,3)
setElementPosition(CurrentWeapon,x,y,z)
Rotation = Rotation + 1
setObjectRotation(CurrentWeapon,0,0,Rotation)
end
end
function onSwitch()
if CurrentWeapon then
destroyElement(CurrentWeapon)
end
if getPedWeapon(getLocalPlayer()) ~= 0 then
CurrentWeapon = createObject(Weapons[getPedWeapon(getLocalPlayer())],0,0,0)
else
CurrentWeapon = nil
end
end
addEventHandler("onClientResourceStart",getResourceRootElement(getThisResource()),initialize)
addEventHandler("onClientPreRender",getRootElement(),setPosition)
addEventHandler("onClientPlayerWeaponSwitch",getRootElement(),onSwitch)
На этом все, следите за обновлениями блога, комментируйте, спрашивайте. На что смогу, на то отвечу. С вами был Crazy, до свидания!
Комментариев нет:
Отправить комментарий