You are not logged in.
Нужно проверить, лежит ли определённая точка впереди игрока. Так объяснить не могу, поэтому приложу скриншоты. Вроде старался, чтобы понятно было всё.
Offline
Самый простой способ - с помощью "actor store pos with offset" получить координаты двух точек, находящихся на одинаковых расстояниях от игрока - первая точка позади игрока, вторая точка впереди. Находим расстояния между заданной точкой и двумя полученными точками. В зависимости от того, какое из двух расстояний меньше, будет определяться то, лежит заданная точка спереди или позади игрока.
Offline
store pos with offset не нашёл.
есть такое
04C4: store_coords_to $TEMPVAR_FLOAT_1 $TEMPVAR_FLOAT_2 $TEMPVAR_FLOAT_3 from_actor 215@ with_offset 1.0 3.0 1.0
но тогда будет определение только по линиям относительно начала координат. В принципе, можно, покумекаю над этим, если, конечно, другого способа нет
хотя тогда проще установить угол актёра и на его основе выбрать оффсет
Last edited by WinuX (10-06-2010 14:03)
Offline
Если я ничего не путаю, оффсеты - не на север, восток и вверх, а вперёд, вправо и вверх относительно актёра.
Offline
Рисую картинку - так будет понятнее:
Код для решения задачи:
0@ = X 1@ = Y 2@ = Z 04C4: store_coords_to 3@ 4@ 5@ from_actor $player_actor with_offset 0.0 1.0 0.0 04C4: store_coords_to 6@ 7@ 8@ from_actor $player_actor with_offset 0.0 -1.0 0.0 050A: 9@ = distance_between_XYZ 0@ 1@ 2@ and_XYZ 3@ 4@ 5@ 050A: 10@ = distance_between_XYZ 0@ 1@ 2@ and_XYZ 6@ 7@ 8@ if 0025: 9@ > 10@ // (float) then // точка позади игрока else // точка впереди игрока или (что мало вероятно) на линии, разделяющей плоскость end
Если я ничего не путаю, оффсеты - не на север, восток и вверх, а вперёд, вправо и вверх относительно актёра.
Совершенно верно, оффсеты отсчитываются не в глобальной, а в локальной системе координат (связанной с игроком, машиной и т.п.)
Last edited by Den_spb (10-06-2010 15:08)
Offline
Offline