class MyCamera extends Camera;
var float Sensitivity;
event PostBeginPlay()
{
Super.PostBeginPlay();
Sensitivity = 1.0; // Настройте чувствительность по своему усмотрению
}
event Tick(float DeltaTime)
{
Super.Tick(DeltaTime);
UpdateCamera();
}
function UpdateCamera()
{
local vector CursorPosition;
local float ScreenX, ScreenY;
// Получаем положение курсора на экране
ScreenX = float(Engine.Canvas.SizeX) * 0.5; // Положение по X (центр)
ScreenY = float(Engine.Canvas.SizeY) * 0.5; // Положение по Y (центр)
// Преобразуем экранные координаты в мировые
CursorPosition = GetCursorWorldPosition(ScreenX, ScreenY);
if (CursorPosition != vect(0, 0, 0))
{
// Поворачиваем камеру в сторону курсора
Rotation = RotFromX(CursorPosition - Location);
}
}
function vector GetCursorWorldPosition(float X, float Y)
{
local vector WorldPosition;
local vector Forward, Right, Up;
// Получаем направление взгляда камеры
Forward = Rotation.Vector();
Right = Rotation.RightVector();
Up = Rotation.UpVector();
// Переводим экранные координаты в мировые
WorldPosition = Location + Forward * 1000; // Дистанция до точки в мире
return WorldPosition;
}