Координаты мира

tonline_kms65_1

Участник
Сообщения
565
Реакции
225
Здравствуйте все.
Мне нужно понять, как на карте получить мировые координаты, т.е. координаты карты(или координаты экрана).
 

RusJJ

Доброе утро девачьки
Сообщения
2,582
Реакции
1,075
В смысле? Координаты сущности worldspawn? 0,0,0, лол) Или что в принципе надо?
 

Shid0

🦾 Свет даëт мне сил!
Сообщения
1,130
Реакции
1,255
Команда getpos не работает что ли?
 

tonline_kms65_1

Участник
Сообщения
565
Реакции
225
В смысле? Координаты сущности worldspawn? 0,0,0, лол) Или что в принципе надо?
Подожди, я еще сам толком не определился что нужно, понял бы - не спрашивал. Нужны только углы.

Просто масса вариантов, это один из предложенных и пока вроде как для меня понятных.
Что бы быть яснее, мне нужно башню танка, при поворотах тела(гусениц) держать в одном направлении, т.е. независимо от положения тела, пробовал по положению курсора - работает, но с проблемами, а в связке сервер-клиент совсем тяжко работает.
Вот я и думаю, нужно просто ориентироваться на мировые углы(они, в любом случае, одинаковы как на серваке так и на клиентах), получить альфу поворота тела и на эту же альфу(только обратную)поворачивать башню, каждый тик, и делать это на клиенте, что бы не было зависимости от сервера.
Так и появился у меня вопрос, а как я получу альфу, есть углы тела, а углы мира, или они все ноль?
И еще, башня в абсолютных значениях, а тело в мировых, как-то так получается. Но для альфы это все равно должно быть.

Если бы альфу между телом и башней - вопросов нет, но альфа тело и мир, пока не соображу. Если постоянно брать от нуля мира - не знаю насколько это правильно будет, так-то вроде как правильно, но у меня есть сомнения.
Для примера:
C++:
delta= NormalizeAngle(тело_angles[0] - мир_angles[0]);
Если я альфу так буду получать, насколько это верно?


Это как один из кучи вариантов, как по мне - он более работоспособен.
 
Последнее редактирование:

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Подожди, я еще сам толком не определился что нужно, понял бы - не спрашивал.

Просто масса вариантов, это один из предложенных и пока вроде как для меня понятных.
Что бы быть яснее, мне нужно башню танка, при поворотах тела(гусениц) держать в одном направлении, т.е. независимо от положения тела, пробовал по положению курсора - работает, но с проблемами, а в связке сервер-клиент совсем тяжко работает.
Вот я и думаю, нужно просто ориентироваться на мировые углы(они одинаковы как на серваке так и на клиентах), получить альфу поворота тела и на эту же альфу(только обратную)поворачивать башню, каждый тик, и делать это на клиенте, что бы не было зависимости от сервера.
Вот и появился у меня вопрос, а как я получу альфу, есть углы тела, а углы мира, или они все ноль?

Если бы альфу между телом и башней - вопросов нет, но альфа тело и мир, пока не соображу. Если постоянно брать от нуля мира - не знаю насколько это правильно будет, так-то вроде как правильно, но у меня есть сомнения.

Это как один из кучи вариантов, как по мне - он более работоспособен.
нифига не понял, какая-то альва, нули мира, сервер-клиент...

Сделайте проше, как только игрок садится в танк, получаете угол поворота башни танка и телепортируете angle игрока по ним, это приведёт к тому, что камера игрока повернётся в относительные нули (относительно башни танка) и игрок будет смотреть в сторону дула. После просто каждый тик сверяйте угол камеры игрока и башни, телепортируя башню по ним, тем самым разворачивая её, так-же можно сюда прикрутить ограничение на скорость вращение камерой (башней).

Телепортировать ент (камеру игрока) в нужный угол:
TeleportEntity(entity, NULL_VECTOR, vec, NULL_VECTOR);
Получить угол поворота глаз игрока (камеры игрока, тут третья ось равна всегда 0):
[SIZE=4]GetClientEyeAngles(int client, float angle[3]);[/SIZE]

Примерная схема работы:
1) игрок подошёл к танку (или как оно там работает) и сел в него
2) получаем угол поворота башни и телепортируем камеру игрока по ним
3) устанавливаем угол поворота башни каждый тик, новый угол берём по камере игрока (в хуке на каждый тик есть в аргументах такое, по ни и работаем)
 
Последнее редактирование:

tonline_kms65_1

Участник
Сообщения
565
Реакции
225
Я же говорил уже, связка сервер-клиент работает плохо, в зависимости от задержек(пинга).

Этот вариант отпадает. И игрока никуда телепортировать мне не нужно, он на месте остаётся, я с камерой работаю.
Даже не в камере дело, просто вариант лагающий. Было бы всё так просто.
И еще, мне нужно не отслеживание прицела(это все у меня сделано на мышке, с управлением башней),а нужно независимое от положения тела направление башни, то, в котором я его последний раз оставил мышкой. Вот что нужно.

Альфа - это разница между положением углов, когда она = нулю - углы совпали, это для информации.

Упсс.. Прошу прощения, не альфа конечно же - дельта 😉. Во я заработался.
Сообщения автоматически склеены:

Да, это оно!
C++:
delta= NormalizeAngle(тело_angles[0] - мир_angles[0]);
Теперь нужно найти, или определить зависимость разницы в скорости поворотов.
Дельтой не совпадает, поэтому здесь только направление вращения ею можно получить. Хотя может быть я где то ошибся.
Но главное я на верном пути. Опять математиков придётся искать☹️.
 
Последнее редактирование:
Сверху Снизу