-
Подскажите пожалуйста. Я вращаю камеру вокруг объекта с помощью запоминания координат курсора, но когда курсур "упирается в край монитора", то вращение прекращается.
procedure TFEngine.ViewerMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin mdx:=x; mdy:=y; end;
procedure TFEngine.ViewerMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Actor1.turn(x-mdx); mdx:=x; mdy:=y; end;
Знаю, что нужно каждую секунду координаты курсора присваивать половине экрана, но mouse.CursorPos типа TPoint. Чему присваивать???
-
Может это?! ... CurPos : TPoint; // координаты курсора Width, Height : Integer; // размеры окна Xi, Yi : Integer; // поворот камеры по осям x, y. ... GetCursorPos(CurPos); SetCursorPos(Width shr 1, Height shr 1); Xi := ( CurPos.X - Width shr 1) / 1000 * 1.4; Yi := (Height shr 1 - CurPos.Y) / 1000 * 1.4;
P.S. 1.4 - Скорость вращения камеры. P.P.S. shr 1 аналогично div 2, только быcтрее.
-
Поправочка: Xi := Xi + ( CurPos.X - Width shr 1) / 1000 * 1.4; Yi := Yi + (Height shr 1 - CurPos.Y) / 1000 * 1.4;
-
Почти то. Я как раз забыл процедуру SetCursorPos. Написал в таймере(500) SetCursorPos(512, 384) и проблема решена. СПАСИБО!!! БОЛЬШОЕ!!!
|