Shift: TShiftState; X, Y: Integer);
begin
PlayerSprite.CanMove:=False;
end;
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DXSpriteEngine.Free;
end;
procedure TPlayerSprite.MoveTo(MoveCount: Integer; Direction: TDirection);
begin
{控制精灵往各个方向移动}
case Direction of
DrUp:
begin
Y := Y-(150/1000)*MoveCount;
Inc(steps);
AnimPos:=steps div speed 20 1;
{当前动画中播放的图片序号}
if steps>4*speed-2 then steps:=0;
end;
DrDown:
begin
Y := Y (150/1000)*MoveCount;
Inc(steps);
AnimPos:=steps div speed 1;
if steps> 4*speed-2 then steps:=0;
end;
DrLeft:
begin
X := X-(150/1000)*MoveCount;
Inc(steps);
AnimPos:=steps div speed 10 1;
if steps>4*speed-2 then steps:=0;
end;
DrRight:
begin
X := X (150/1000)*MoveCount;
Inc(steps);
AnimPos:=steps div speed 30 1;
if steps>4*speed-2 then steps:=0;
end;
DrUpLeft:
begin
X := X-(150/1000)*MoveCount;
Y := Y-(150/1000)*MoveCount;
Inc(steps);
AnimPos:=steps div speed 15 1;
if steps>4*speed-2 then steps:=0;
end;
DrUpRight:
begin
X := X (150/1000)*MoveCount;
Y := Y-(150/1000)*MoveCount;
Inc(steps);
AnimPos:=steps div speed 25 1;
if steps>4*speed-2 then steps:=0;
end;
DrDownLeft:
begin
X := X-(150/1000)*MoveCount;
Y := Y (150/1000)*MoveCount;
Inc(steps);
AnimPos:=steps div speed 5 1;
if steps>4*speed-2 then steps:=0;
end;
DrDownRight:
begin
X := X (150/1000)*MoveCount;
Y := Y (150/1000)*MoveCount;
Inc(steps);
AnimPos:=steps div speed 35 1;
if steps>4*speed-2 then steps:=0;
end;
end;
end;
end.
后记
通过以上的讲解和例子,相信大家已经对 Delphi 下的 DirectX 游戏开发有了初步的概念。国内讲解开发 DirectX 游戏的权威资料很少,如果这篇讲解可以起到抛砖引玉的效果的话,我将再高兴不过了。本文部分内容借鉴了国外一些游戏开发网站的技术文档,在此一并致谢。如果各位有什么问题需要和我交流,请发信至eagle_california@yahoo.com。
源程序下载地址:http://www.cfan.com.cn/11PROGRAM/200312/0312yde.zip
作者:郭磊
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




