Перейти к содержимому


Фотография

Вращение созданной камеры с помощью мыши.


Лучший Ответ NoFrost , 08 November 2019 - 09:41

disableSerialization;


MyTarget = player; // Замени на свой объект


createDialog "RscDisplayEmpty";


_Dialog = findDisplay -1;


My_camera = "camera" camcreate [0,0,0];
My_camera cameraeffect ["internal", "back"];
showCinemaBorder false;


My_camera camsetTarget MyTarget;
My_camera camsetPos (MyTarget modelToWorld [0,10,5]);
My_camera camsetFOV 0.8;
My_camera camCommit 0;
MyBigScroll = 0.8;


MouseRightButtonDown_True = false;
_Dialog displayaddEventHandler ["Unload",{
My_camera cameraeffect ["terminate", "back"];
}];
_Dialog displayaddEventHandler ["MouseButtonDown",{
params ['_displayorcontrol', '_button'];
if (_button isEqualTo 1) then {
MouseRightButtonDown_True = true;
};
}];


_Dialog displayaddEventHandler ["MouseMoving",{
params ["_control", "_xPos", "_yPos"];


if (MouseRightButtonDown_True) then {
MyTarget setDir (getDir MyTarget - (_xPos * 2));
};
if (MouseRightButtonDown_True) then {
MyBigScroll = MyBigScroll - (_yPos/100);
if (MyBigScroll > 1) then {MyBigScroll = 1};
if (MyBigScroll < 0.3) then {MyBigScroll = 0.3};
My_camera camsetFOV MyBigScroll;
My_camera camCommit 0;
};
}];


_Dialog displayaddEventHandler ["MouseButtonup",{
params ['_displayorcontrol', '_button'];
if (_button isEqualTo 1) then {
MouseRightButtonDown_True = false;
};
}];


_Dialog displayaddEventHandler ["onMouseZChanged",{
params ['_displayorcontrol', '_scroll'];


if (MouseRightButtonDown_True) then {


MyBigScroll = MyBigScroll - _scroll;
if (MyBigScroll > 1) then {MyBigScroll = 1};
if (MyBigScroll < 0.3) then {MyBigScroll = 0.3};
My_camera camsetFOV MyBigScroll;
My_camera camCommit 0;


};


}];

Я еще реализовал приближение отдаление на движение мыши вверх и вниз на всякий.
Перейти к сообщению


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 OFFLINE   Dispite

Dispite

    Ефрейтор

  • Пользователи
  • 94 сообщений
  • Откуда:Не помню

Отправлено 21 October 2019 - 15:53

Здравствуйте! Нужно создать камеру, направленную на определённый объект, с возможностями вращения(зажав правую кнопку мыши), приближения и отдаления по заданным пределам (колёсико мыши). 
Саму камеру я создал, но она статична и имеет чёрные рамки. 


Сообщение отредактировал Dispite: 21 October 2019 - 15:57

  • 0

#2 OFFLINE   Denispetrov123

Denispetrov123

    Ефрейтор

  • Пользователи
  • 82 сообщений
  • Откуда:Москва

Отправлено 25 October 2019 - 16:35

// создает камеру

_camera = "camera" camcreate [0,0,0]
_camera cameraeffect ["internal", "back"]

//отключает полоски снизу и сверху
showCinemaBorder false

//где target это имя переменной объекта на которой фокусируется камера
_camera camPrepareTarget target
_camera camPreparePos [2983.85,2985.21,32.76]
_camera camPrepareFOV 0.700
_camera camCommitPrepared 0

К сожалению способ с зажатием мышки не работает, нужно будет на каждом кадре куда вы хотите ее направить жать ЛКМ и вставлять эти строчки в скрипт с камерой.

 

Приближение и отдаление делается через: _camera camPrepareFOV 0.700

0.700 это без изменений,

0.500 чуть поближе,

0.300 еще ближе,

0.100 край.


  • 0

#3 OFFLINE   NoFrost

NoFrost

    Рядовой

  • Пользователи
  • 10 сообщений

Отправлено 08 November 2019 - 09:41   Лучший Ответ

disableSerialization;


MyTarget = player; // Замени на свой объект


createDialog "RscDisplayEmpty";


_Dialog = findDisplay -1;


My_camera = "camera" camcreate [0,0,0];
My_camera cameraeffect ["internal", "back"];
showCinemaBorder false;


My_camera camsetTarget MyTarget;
My_camera camsetPos (MyTarget modelToWorld [0,10,5]);
My_camera camsetFOV 0.8;
My_camera camCommit 0;
MyBigScroll = 0.8;


MouseRightButtonDown_True = false;
_Dialog displayaddEventHandler ["Unload",{
My_camera cameraeffect ["terminate", "back"];
}];
_Dialog displayaddEventHandler ["MouseButtonDown",{
params ['_displayorcontrol', '_button'];
if (_button isEqualTo 1) then {
MouseRightButtonDown_True = true;
};
}];


_Dialog displayaddEventHandler ["MouseMoving",{
params ["_control", "_xPos", "_yPos"];


if (MouseRightButtonDown_True) then {
MyTarget setDir (getDir MyTarget - (_xPos * 2));
};
if (MouseRightButtonDown_True) then {
MyBigScroll = MyBigScroll - (_yPos/100);
if (MyBigScroll > 1) then {MyBigScroll = 1};
if (MyBigScroll < 0.3) then {MyBigScroll = 0.3};
My_camera camsetFOV MyBigScroll;
My_camera camCommit 0;
};
}];


_Dialog displayaddEventHandler ["MouseButtonup",{
params ['_displayorcontrol', '_button'];
if (_button isEqualTo 1) then {
MouseRightButtonDown_True = false;
};
}];


_Dialog displayaddEventHandler ["onMouseZChanged",{
params ['_displayorcontrol', '_scroll'];


if (MouseRightButtonDown_True) then {


MyBigScroll = MyBigScroll - _scroll;
if (MyBigScroll > 1) then {MyBigScroll = 1};
if (MyBigScroll < 0.3) then {MyBigScroll = 0.3};
My_camera camsetFOV MyBigScroll;
My_camera camCommit 0;


};


}];

Я еще реализовал приближение отдаление на движение мыши вверх и вниз на всякий.

Сообщение отредактировал NoFrost: 08 November 2019 - 09:58

  • 1




Яндекс.Метрика