Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал Полеты камерой.

Статус
В этой теме нельзя размещать новые ответы.
Доброго времени суток уважаемые пользователи портала Pawno-Info.

За последнее количество времени стало много возникать вопросов с полетами камер, люди мы уже современные, и все хотим чтобы было все у нас шикарно. Так вот пошла мода делать все летающее и движущее, но многие понятия не имеют как же осуществить хотя бы перелет камерой из одного места в другой.

Сегодня я постараюсь вам это рассказать. Похожего материала не встречал, если было, уж простите.

Итак, для осуществления полета, нам потребуется две функции, которые собственно и вызывают полет.
​


Функция 1 -
InterpolateCameraPos

Этой функцией задаются координаты камеры, по которой они будут следовать.
playerid - ID игрока которому будет показана камера.
Float: FromX - Начальное положение камеры по координате Х.
Float: FromY - Начальное положение камеры по координате Y.
Float: FromZ - Начальное положение камеры по координате Z.
Float: ToX - Конечная координата Х.
Float: ToY - Конечная координата Y.
Float: ToZ - Конечная координата Z.
Time - время указывается в миллисекундах.
cut - На мой взгляд бесполезный аргумент. Задает плавность камеры. По умолчанию CAMERA_CUT. CAMERA_MOVE для плавного движения.

Пример функции:
PHP:
InterpolateCameraPos(playerid, 298.2383,-39.2116,1002.55, 293.3211,-39.2116,1002.55, 1000, CAMERA_MOVE);

2 Функция - InterpolateCameraLookAt

Это функция для интерполяции, другими словами, установка скорости камеры и заданного виду, например вид сверху.

playerid - ID игрока которому будет показана камера.
Float: FromX - Начальное положение камеры по координате Х.
Float: FromY - Начальное положение камеры по координате Y.
Float: FromZ - Начальное положение камеры по координате Z.
Float: ToX - Конечная координата Х.
Float: ToY - Конечная координата Y.
Float: ToZ - Конечная координата Z.
Time - время указывается в миллисекундах.

Пример функции:

PHP:
InterpolateCameraLookAt(playerid, 298.265594, -39.519813, 1000.55, 293.386596, -39.519813, 1000.55,1000);

P.S. Так же эти функции можно использовать отдельно друг от друга.

Для вашего удобства, сделал команду для сохранения позиции камер.


PHP:
	if(strcmp(cmdtext, "/savecam", true, 8) == 0)
	{
    	static const
        fmt_str0[] = "SetPlayerCameraPos(playerid, %f, %f, %f);\n",
        fmt_str1[] = "SetPlayerCameraLookAt(playerid, %f, %f, %f);\n";
    	const
        fmt_size0 = sizeof(fmt_str0) + (-2 + 11) * 3,
        fmt_size1 = sizeof(fmt_str1) + (-2 + 11) * 3;
    	#if fmt_size0 > fmt_size1
        #define final_size fmt_size0
    	#else
        #define final_size fmt_size1
    	#endif
    	new
        str[final_size],
        File: cam_file = fopen("CamCoords.ini", io_append),
        Float: cam_pos_axis_x,
        Float: cam_pos_axis_y,
        Float: cam_pos_axis_z,
        Float: cam_pos_vec_axis_x,
        Float: cam_pos_vec_axis_y,
        Float: cam_pos_vec_axis_z;
    	#undef final_size
    	GetPlayerCameraPos(playerid, cam_pos_axis_x, cam_pos_axis_y, cam_pos_axis_z);
    	GetPlayerCameraFrontVector(playerid, cam_pos_vec_axis_x, cam_pos_vec_axis_y, cam_pos_vec_axis_z);
    	format(str, sizeof(str), fmt_str0, cam_pos_axis_x, cam_pos_axis_y, cam_pos_axis_z);
    	fwrite(cam_file, str);
    	format(str, sizeof(str), fmt_str1, cam_pos_axis_x + 5.0 * cam_pos_vec_axis_x, cam_pos_axis_y + 5.0 * cam_pos_vec_axis_y, cam_pos_axis_z + 5.0 * cam_pos_vec_axis_z);
    	fwrite(cam_file, str);
    	return fclose(cam_file);
	}
Координаты будут в папке scriptfiles в документе под названием CamCoords.
За каждое сохранение будет две координаты, это:

SetPlayerCameraPos
SetPlayerCameraLookAt


Функции полета будут действовать в любом паблике, можете вставить в команду, либо в заданную функцию, неважно. Полет будет осуществляться везде.

Спасибо за внимание. Надеюсь урок был для вас познавательным.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу