|
#1
|
|||
|
|||
2Д бродилка
Пытаюсь сделать игру наподобие гта)))) чисто для себя. При движении точка почему-то дёргается, хотелось бы сделать движение более плавным, период таймера 20мс. В качестве всех объектов использую Shape. Мне кажется это из-за того что координаты объекта left,top целые числа.
http://rghost.ru/3990871 Код:
procedure TForm1.tmr1Timer(Sender: TObject); var i:integer; b:boolean; foo:TPoint; begin GetCursorPos(foo); edt4.Text:=IntToStr(foo.x-form1.left); edt5.Text:=IntToStr(foo.y-form1.top-60); {angle:=;} //============================================================ // Вычисление движения по углу. // Границы угла от 0 до 360 градусов. //============================================================ if (ObjP>0) and (ObjS>=0) then begin x:=Round(JUMP_SPEED*cos((angle*2*PI)/360)); y:=Round(JUMP_SPEED*sin((angle*2*PI)/360)); ObjP:=ObjP-1; edt1.Text:='Скорость: '+FloatToStr(JUMP_SPEED); end else begin edt1.Text:='Скорость: '+FloatToStr(ObjS); x:=Round(ObjS*cos((angle*2*PI)/360)); y:=Round(ObjS*sin((angle*2*PI)/360)); end; if angle+ObjA<0 then angle:=360; if angle+ObjA>360 then angle:=0; angle:=angle+ObjA; //============================================================ // Проверка всех объектов на столкновения. // OBJECT_COUNT - количество существующих объектов. //============================================================ b:=true; for i:=1 to OBJECT_COUNT do if not(ObjColl(shp1.top+y,shp1.Left+x,i,h)) then b:=False; //============================================================ //============================================================ //============================================================ // Проверка условий для движения. // Движение. //============================================================ if b and BorderColl(shp1.Left+x,shp1.Top+y) then begin pnl2.Left:=pnl2.Left-x; pnl2.Top:=pnl2.Top-y; shp1.Left:=shp1.Left+x; shp1.Top:=shp1.Top+y; end; //============================================================ //============================================================ end; |
#2
|
||||
|
||||
Код:
procedure TForm1.FormCreate(Sender: TObject); begin Self.DoubleBuffered := True; end; Помогаю за Спасибо |
#3
|
||||
|
||||
Держи набор спрайтов для 2D игрули. Это конечно не ГТА, но может пригодится.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#4
|
|||
|
|||
Цитата:
Период стандартного таймера вроде бы не может быть меньше, чем 55 мсек. |