文本描述
本 章 重 点 11-1 基本动画与贴图
11-2 斜角地图
11-3 粒子运动
11-4 立体坐标与投影效果
11-5 碰撞
11-1 基本动画与贴图 模拟真实世界中某些事物的移动,得套用一些相关的数学或物理公式,这也衍生出另一个观念:程序语言、算法、数学等相关学科的相互结合,才有可能创造出最有效用的程序。 11.2 贴图动画 PaintPicture(source, dx, dy, dwidth, dheight, sx, sy, swidth, sheight, opcode)
soucre:绘图来源对象
(dx, dy):目标区坐标
(dwidth, dheight):目标区绘图区域大小
(sx, sy):来源区坐标
(swidth, sheight):来源区图形区域大小
opcode:vb句柄
使用Timer组件控制动画播放速度 11.1.3 横向滚动条贴图 远景背景图 近景背景图 11.1.4 互动地图卷动 请使用左右方向键来操作地图卷动 每次只显示地图的一小块区域 11.1.5 障碍通过 钢筋为障碍物,人物遇到障碍物会无法通过 根据上图可以设定一个二维数组来记录障碍物的位置。数组设定如下所示,其中标示为1表示该处存在障碍物:
1, 1, 1, 1, 1
0, 0, 0, 0, 1
0, 0, 1, 0, 0
0, 1, 1, 0, 0
1, 1, 1, 1, 0 根据这个背景图,我们可以定义出一个数组来记录每一个障碍物的位置,我们的数组定义如下所示:
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 1, 0, 0, 0, 0
0, 0, 0, 1, 1, 0, 0, 0
1, 1, 1, 1, 1, 1, 1, 1 可卷动背景的障碍超越程序 设定了边界的地图,此时已经是二维地图 11-2 斜角地图 使用贴图方式制作斜角地图,必须先明白如何制作透空图,也就是在贴图时,图片的背景是透明的,如此在重复贴图时才不致于使得背景覆盖了其它的图片。 原 图 遮 罩 图 将屏蔽图贴到背景图上,并与背景图上的每一点进行AND运算,其结果会如下所示:
屏蔽与背景中每一点像素进行AND运算 斜角地图拚接 地图方格 屏蔽图 使用键盘进行人物移动 操作,移动的方式与成果如右图所示:
上 左 右 下 无锯齿,无边界的协角地图 有障碍物的斜角地图 坐标定位与数组索引的对应 少了方格线,看来已有游戏的感觉了 11-3 粒子运动 粒子的信息描述越详细,烟火的模拟就可以越逼真,为了简化范例说明的逻辑,我们将每个粒子的信息定义如下:
Private Type pot
state As Boolean ' 是否存活
x As Integer ' 碎片目前X位置
y As Integer ' 碎片目前Y位置
Vx As Integer ' 碎片的水平速度
Vy As Integer ' 碎片的垂直速度
color As Long ' 绘制碎片的不同颜色
End Type 五彩缤纷的烟火施放 雪花效果 一个雪花粒子的基本定义: 01 ' 定义雪花粒子
02 Private Type snow
03 x As Integer ' 雪花的 X 位置
04 y As Integer ' 雪花的 Y 位置
05 size As Integer ' 雪花的大小
06 End Type 。。。以下略