Перейти к содержанию
Eldaba

Расстояние до противника [Любой 3D шутер]

Рекомендуемые сообщения

Здравствуйте, форумчане!

Я к Вам вот с таким, легким для вас, вопросом. Как высчитать дистанцию, до противника в игре и показывать её? Конкретной игры нет, абстактно. Надеюсь на Вашу помощь, новичку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот так вот абстрактно отвечаю:

Найти свои координаты, найти координаты противника, посчитать разницу, она и будет расстоянием.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не могли бы, предоставить код данной функции, для ознакомления, если не затруднит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
21 минуту назад, Xipho сказал:

Вот так вот абстрактно отвечаю:

Странно как к примеру самому не додуматься до такого.. геометрия же.

Вроде так:
*2 - в квадрате
√ - квадратный корень

A = 100, 50, 25

B = 300, 25, 50
Distance = √( 300 - 100 )*2 + ( 25 - 50 )*2 + ( 50 - 25 )*2
Distance = 203,1

 

Изменено пользователем ReWanet

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
56 минут назад, Eldaba сказал:

код данной функции, для ознакомления

Как-то так

float Get3dDistance(float * myCoords, float * enemyCoords)
{
	return sqrt(
		pow(double(enemyCoords[0] - myCoords[0]), 2.0) +
		pow(double(enemyCoords[1] - myCoords[1]), 2.0) +
		pow(double(enemyCoords[2] - myCoords[2]), 2.0));
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
double Dist(D3DXVECTOR3 v1, D3DXVECTOR3 v2)
{
    return sqrt(((v1.x - v2.x)*(v1.x - v2.x)) + ((v1.y - v2.y)*(v1.y - v2.y)) + ((v1.z - v2.z)*(v1.z - v2.z)));
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я тут на вовке специализируюсь;)
Если тебе нужны были б координаты в этой игре, то на lua это выглядело примерно так:
 

local x1 = select(1, ObjectPosition("Player"));
local y1 = select(2, ObjectPosition("Player"));
local z1 = select(3, ObjectPosition("Player"));

 

local x2 = select(1, ObjectPosition("Target"));
local y2 = select(2, ObjectPosition("Target"));
local z2 = select(3, ObjectPosition("Target"));

 

или a, b, c = ObjectPosition("Target");

print(x2); print(x2, y2, z2); print(a, b, c);

 

Это всё подключаемые библиотеки FireHack api.

 

Хотя для твоих целей есть: function GetDistanceBetweenObjects (Object1, Object2)

--Get the distance between two objects. --Дистанция между 2-мя объектами.
Object1 (object) - The first object. Может быть игрок, цель, нпц, травка, белочка и т.д.
Object2 (object) - The second object
returns (number) - The distance

 

Но можно и вручную:

local a = ObjectPosition("Target");

local b = ObjectPosition("Player");

local distance = (a-b)

 

print(distance)

54.140713 6297.685547 -15.241007 1220

 

Число с точкой. Добавляем print(float(distance))

 

Сами координаты в ewt чекаются командой: .gps

Спойлер

erbDT96.png

Выводить инфу либо print(ом) в чате, либо через текст фреймы в игре (как на картинке выше). +обновлять на OnUpdate координаты постоянно, с каждой сменной кадров. Вот как это выглядит. Взгляд направлять в область: top center. Персонаж бегает, циферки меняются.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

×

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.