Есть два объекта в мире, один стоит на месте а другой перемещается, мне нужно повернуть первый объект в сторону второго. Можно как то вычислить углы xyz на которые надо повернуть обьект относительно координат перемещаемого объекта средствами рейджа?
Ну вот так можно Rotation.Z вычислитьЕсть два объекта в мире, один стоит на месте а другой перемещается, мне нужно повернуть первый объект в сторону второго. Можно как то вычислить углы xyz на которые надо повернуть обьект относительно координат перемещаемого объекта средствами рейджа?
Vector3 dir = from - To;
double angle = -Math.Atan2(dir.X, dir.Y) * (180 / 3.1416f) + 180;
public static Vector3 DirectionToRotation(Vector3 dir, float roll)
{
dir = dir.Normalized;
Vector3 rotval = new Vector3();
rotval.Z = ((float)Math.Atan2(dir.X, dir.Y)) * (180.0f / MathF.PI);
Vector3 rotpos = new Vector3(dir.Z, new Vector3(dir.X, dir.Y, 0.0f).Length(), 0.0f).Normalized;
rotval.X = ((float)Math.Atan2(rotpos.X, rotpos.Y)) * (180.0f / MathF.PI);
rotval.Y = roll;
return rotval;
}
Ебать ты сверхразумC#:public static Vector3 DirectionToRotation(Vector3 dir, float roll) { dir = dir.Normalized; Vector3 rotval = new Vector3(); rotval.Z = ((float)Math.Atan2(dir.X, dir.Y)) * (180.0f / MathF.PI); Vector3 rotpos = new Vector3(dir.Z, new Vector3(dir.X, dir.Y, 0.0f).Length(), 0.0f).Normalized; rotval.X = ((float)Math.Atan2(rotpos.X, rotpos.Y)) * (180.0f / MathF.PI); rotval.Y = roll; return rotval; }
Если эти объекты не являются человеком или машиной, запаришься находить их позицию, повернуть их друг к другу это 10 процентов дел)
я две ночи сижу уже, накостылял что то через рейкасты, пашет, но хотелось бы лучше, если кто шарит, как получить entity заспавненного object (не пед не авто) подскажите пожалуйста)
let entity = mp.objects.new('apa_prop_flag_portugal', player.position,
{
rotation: player.rotation,
alpha: 250,
dimension: player.dimension
});
let entity = mp.objects.at(id);
Ну в моем случае я сам создавал координаты обьекта на основе положения камеры, и пересечения ею обьектов. Entity любого обьекта это Handle, я делаю все на c#, объекты создаю через RAGE.Game.Elements.MapObject mapobj = new ... а уже в самом обьекте есть HandleЕсли эти объекты не являются человеком или машиной, запаришься находить их позицию, повернуть их друг к другу это 10 процентов дел)
я две ночи сижу уже, накостылял что то через рейкасты, пашет, но хотелось бы лучше, если кто шарит, как получить entity заспавненного object (не пед не авто) подскажите пожалуйста)
Да и RAGE.Game.CreateObject возвращает же его entity, если ты на c# делаешЕсли эти объекты не являются человеком или машиной, запаришься находить их позицию, повернуть их друг к другу это 10 процентов дел)
я две ночи сижу уже, накостылял что то через рейкасты, пашет, но хотелось бы лучше, если кто шарит, как получить entity заспавненного object (не пед не авто) подскажите пожалуйста)
Спасибо, да делаю на си шарпДа и RAGE.Game.CreateObject возвращает же его entity, если ты на c# делаеш
Спасибо, да делаю на си шарп
спасибо что отписали но у меня чуть по другому это все, если ты создаешь объект, то да, это функция возвращает его хендл и все данные,
но у меня игрок создает разные обеъкты, пропов может быть куча видов, сохранять в памяти все запавленные объекты не хотелось бы, по этому я сохраняют имя пропа и позицию в базе с дополнительной инфой, после чего когда сервер загружается сервер расставляет все объекты по местам, опять же я не сохраняю в список все хендлы, так как объектов может быть 1000, и вот допустим игрок идет по карте и видит заспавленный объект, хэндл после вставки этого объекта не было сохранен, хотелось бы решить эту проблему что то типо того, какие объекты есть в радиусе двух метров например, но подобного ничего не нашел, либо возрвщает хэндлы у которых пустые значения координат, моделей и тд и тп
p.s RAGE.Game.Elements.MapObject mapobj не могу найти документацию, что это?)
А как ты получаеш обьекты в радиусе?Спасибо, да делаю на си шарп
спасибо что отписали но у меня чуть по другому это все, если ты создаешь объект, то да, это функция возвращает его хендл и все данные,
но у меня игрок создает разные обеъкты, пропов может быть куча видов, сохранять в памяти все запавленные объекты не хотелось бы, по этому я сохраняют имя пропа и позицию в базе с дополнительной инфой, после чего когда сервер загружается сервер расставляет все объекты по местам, опять же я не сохраняю в список все хендлы, так как объектов может быть 1000, и вот допустим игрок идет по карте и видит заспавленный объект, хэндл после вставки этого объекта не было сохранен, хотелось бы решить эту проблему что то типо того, какие объекты есть в радиусе двух метров например, но подобного ничего не нашел, либо возрвщает хэндлы у которых пустые значения координат, моделей и тд и тп
p.s RAGE.Game.Elements.MapObject mapobj не могу найти документацию, что это?)
Это какая то секретная схема? почему то документацию не могу найти по ней)
Сейчас я кидаю рейкаст на объект, и рейкаст возвращает хендл, но если объект маленький сложно мышкой попасть) вот и спросил как получить объекты в радиусе по человечески без рейкастовА как ты получаеш обьекты в радиусе?
Не, просто c# плохо документированЭто какая то секретная схема? почему то документацию не могу найти по ней)
Ну судя по всему разницы нет, что мап обжект использовать, что я в базу сохраняю,Не, просто c# плохо документирован
А на стороне сервера можно расчитать дистанцию между двумя объектами если известны X Y Z и того и другого?
getDistance = (x1,y1,z1,x2,y2,z2)=>{
return Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2) + (z1 - z2) * (z1 - z2));
}
Лайк, подпискаКод:getDistance = (x1,y1,z1,x2,y2,z2)=>{ return Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2) + (z1 - z2) * (z1 - z2)); }
Vector3.Distance, но не рекомендую выполнять ресурсоемкие мат вычисления со стороны сервераА на стороне сервера можно расчитать дистанцию между двумя объектами если известны X Y Z и того и другого?
Distance настолько ресурсоёмкий?Vector3.Distance, но не рекомендую выполнять ресурсоемкие мат вычисления со стороны сервера