Просмотр полной версии : [Вопрос] Как создать пикап/маркер рядом с авто?
Всем привет, подскажите как создается такой маркер? https://imgur.com/a/yGHrUVU
(Т.е конкретно рядом с авто, в желаемом месте загрузки)
Должен использоваться для загрузки/разгрузки рабочего авто.
Вот готовая функция
stock GetCoordBootVehicle(vehicleid, &Float:x, &Float:y, &Float:z)
{
new Float:angle,Float:distance;
GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_SIZE, x, distance, z);
distance = distance/2 + 0.1;
GetVehiclePos(vehicleid, x, y, z);
GetVehicleZAngle(vehicleid, angle);
x += (distance * floatsin(-angle+180, degrees));
y += (distance * floatcos(-angle+180, degrees));
return 1;
}
Как можно увидеть, через GetVehicleModelInfo узнаётся размер модели авто по оси y (от багажника до капота). Далее результат делится на 2, дабы получить расстояние от центра до багажника/капота. Ну а дальше идёт получение позиции авто на карте и вычисление координат перед багажником при помощи тригонометрии.
Поворот транспорта можно узнать через GetVehicleZAngle, а смещение (offset) относительно координат транспорта можно получить через GetVehicleModelInfo, либо вручную подобрать
UPD: извиняюсь, загрузил страницу до появления ответа выше
Вот готовая функция
stock GetCoordBootVehicle(vehicleid, &Float:x, &Float:y, &Float:z)
{
new Float:angle,Float:distance;
GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_SIZE, x, distance, z);
distance = distance/2 + 0.1;
GetVehiclePos(vehicleid, x, y, z);
GetVehicleZAngle(vehicleid, angle);
x += (distance * floatsin(-angle+180, degrees));
y += (distance * floatcos(-angle+180, degrees));
return 1;
}
Как можно увидеть, через GetVehicleModelInfo узнаётся размер модели авто по оси y (от багажника до капота). Далее результат делится на 2, дабы получить расстояние от центра до багажника/капота. Ну а дальше идёт получение позиции авто на карте и вычисление координат перед багажником при помощи тригонометрии.
Спасибо, как всегда выручил! Все получилось!
Вот готовая функция
stock GetCoordBootVehicle(vehicleid, &Float:x, &Float:y, &Float:z)
{
new Float:angle,Float:distance;
GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_SIZE, x, distance, z);
distance = distance/2 + 0.1;
GetVehiclePos(vehicleid, x, y, z);
GetVehicleZAngle(vehicleid, angle);
x += (distance * floatsin(-angle+180, degrees));
y += (distance * floatcos(-angle+180, degrees));
return 1;
}
Как можно увидеть, через GetVehicleModelInfo узнаётся размер модели авто по оси y (от багажника до капота). Далее результат делится на 2, дабы получить расстояние от центра до багажника/капота. Ну а дальше идёт получение позиции авто на карте и вычисление координат перед багажником при помощи тригонометрии.
А возможно ли реализовать следующее:
Появился маркер с одной стороны авто,игрок встал на него-произошло действие и маркер удалился. После него появился следующий, но с небольшим смещением по какой-либо оси, опять игрок встает и выполняется действие, после чего маркер удаляется и появляется следующий.
Как можно такое реализовать?
А возможно ли реализовать следующее:
Появился маркер с одной стороны авто,игрок встал на него-произошло действие и маркер удалился. После него появился следующий, но с небольшим смещением по какой-либо оси, опять игрок встает и выполняется действие, после чего маркер удаляется и появляется следующий.
Как можно такое реализовать?
Эмм, точно так же, рассчитывая координаты вокруг авто?
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot