Delphix слежение спрайта за мышкой

Тема в разделе "Delphi - Multimedia, Графика, Игры", создана пользователем Dock1100, 9 май 2010.

  1. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Как заставить спрайт смотреть прямо на курсор а не левее, правее?
     
  2. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Все, разобралса.
    В DelphiХ 360 градусов = 256 градусов(для поворота), тоесть
    <!--shcode--><pre><code class='auto delphi'>function getanglefromline(x1,y1,x2,y2:double):integer;//ищу угол
    var g,k,angle:single;
    begin
    g:=sqrt(sqr(x1-x2)+sqr(y1-y2));
    k:=x2-x1;
    if k = 0 then angle := 0
    else if g=0 then angle:=1
    else angle:=k/g;
    angle:=ArcCos(angle);
    angle:=radtodeg(angle);
    if y1<y2 then angle:=360 - angle;
    angle:=angle-90; // - 90 потому что я сначало ущу угол к Ох, а потом к Оу(отнимаю 90)
    if angle<0 then angle:=270 + Abs(90-abs(angle));
    getanglefromline:=round(angle);
    end;

    procedure TForm1.DXDraw1MouseMove(Sender: TObject; Shift: TShiftState; X,
    Y: Integer);
    var g:real;
    begin
    g:=getanglefromline(gun.X+gun.Image.Width/2,gun.Y+gun.Image.Height/2,x,y);
    g:=(360-g)*128/180;
    gun.Angle:=round(g);
    end;[/CODE]

    ЗЫ замените файл DXSprite на приложеный(там добавлена процедура Angle(для удобства))
     

    Вложения:

    • dxsprite.rar
      Размер файла:
      5,3 КБ
      Просмотров:
      14

Поделиться этой страницей