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

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


Гость Eldaba

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

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

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

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

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));
}

 

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

  • 3 недели спустя...

Я тут на вовке специализируюсь;)
Если тебе нужны были б координаты в этой игре, то на 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. Персонаж бегает, циферки меняются.

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

×
×
  • Создать...

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

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