Конференция "Игры" » Turn [Delphi, Windows]
 
  • Mr.Vlad (27.08.07 00:04) [0]
    Подскажите пожалуйста. Я вращаю камеру вокруг объекта с помощью запоминания координат курсора, но когда курсур "упирается в край монитора", то вращение прекращается.

    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. Чему присваивать???
  • ElectriC © (27.08.07 00:45) [1]
    Может это?!
    ...
    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трее.
  • ElectriC © (27.08.07 00:52) [2]
    Поправочка:
    Xi := Xi + (  CurPos.X - Width shr 1) / 1000 * 1.4;
    Yi := Yi + (Height shr 1 -  CurPos.Y) / 1000 * 1.4;
  • Mr.Vlad (27.08.07 21:27) [3]
    Почти то.
    Я как раз забыл процедуру SetCursorPos.
    Написал в таймере(500) SetCursorPos(512, 384) и проблема решена.
    СПАСИБО!!! БОЛЬШОЕ!!!
 
Конференция "Игры" » Turn [Delphi, Windows]
Есть новые Нет новых   [134431   +10][b:0][p:0]