1、有人说,我不会vb怎么办?既然是从零开始的教程,我自然已经考虑到了这个问题。既然只是做游戏,又不是制作应用软件,所以我们只需要知道几个常用的命令就可以了。下面列出来就是vb在游戏制作中常用的命令,有vb基础的同学可以直接跳过这里了。1、变量:用来储存数据或文字常用的变量类型Long整数Single浮点,也就是有小数点的数String文字实际上制作游戏只需要用到这3种类型,甚至连long都可用single代替。举例:dim aaa as singleAaa=100就是定义了一个名为aaa的小数变量,且aaa的值为1002、条件命令格式:If条件then结果Else没达到条件的结果End ifif
2、 aaa=100aaa= aaa+1当条件a=100时,运行结果aaa=aaa+1,这样aaa的值就变为101了。3、重复命令For nextdim i as longfor i= 1 to重复次数重复内容Nextfor i=1 to 10aaa=aaa+1next也就是把aaa+1重复10次,这样也就相当于是aaa+10了这里顺便提一个命令DoLoop until条件这个就是无限循环了,不达到条件是不会停止的,这个游戏中只有主循环才会用一次,所以大家知道一下就可以了。4、随机函数rnd*最大范围游戏中会用到很多的随机事件,实际上,世界上根本就没有随机,我们是不知道原理或者不想去细致的讨论全部
3、因素才会用随机来代替。比如敌方的子弹射过来,子弹的路径之所以不同,主要是由枪的后座力、稳定性,子弹的规整度,风力、空气密度,敌人的瞄准能力、反应能力、手臂肌肉强度,以及敌人在射击的一瞬间的心理活动总之,我们不想,也没必要去考虑这些问题,所以在游戏中干脆就把敌人的命中率设为30%就ok啦。代码如下,你可以好好研究下Dim aaa as longAaa=rnd*100If aaa b Then MsgBox 大了 if语句写在一行之内可以省去结尾的end ifIf a 小了LoopEnd Sub也许有人会问了,vb不是效率很低么?不是很多人都认为vb不能制作大型游戏么?我要说的是,直接用vb来制作
4、游戏,确实效率很低,这本没有错。这样就必须引出vb亲密的伙伴tv3d了。Tv3d全名TrueVision3D,是美国的一款免费的商业3d游戏引擎。其实tv3d也支持c+,Delphi等编程语言,只不过你学习别的编程语言至少也要1个月。Tv3d是以微软发布的dx作为底层,也就是运行效率和vb没有多少关系,vb只需要调用tv3d命令和一些表层数据的计算就可以了,其余的包括渲染,碰撞都是由tv3d完成,所以制作大型游戏完全没有问题,而且tv3d的效率还是相当高的。Tv3d的官方网站是6.3版本下载(特点,直接支持cs的bsp地图,以及mdl骨骼动画,并且附带很多基础的教程和例子)6.5版本下载(特点
5、,拥有更强大的特效,如水面反射、动态阴影、泛光、物理引擎等。支持win7)我要教大家的就是6.5版本,一个更加高效率,更强大特效的版本。之前的6.3版本使用的人已经很多了,也有很多人制作出了很棒的游戏。比如梦幻战争系列,这可是一个人制作的哦。但是用6.5制作的游戏确不多见,主要原因就是因为例子和教程比较少,所以希望我的教程能够填补这一空白,使大家对6.5能有个进一步的了解。我们也来看看6.5强大的特效。好,我们下载完成后安装,然后打开vb,点上面菜单中的工程,然后点引用。注意这是很重要的一步,如图,把tv3d的dll引用了,点确定,这样才能让vb能够调用tv3d。像往常一样,我们先来个hell
6、oworld吧,来做我们的第一个tv3d程序。下面是全部代码,直接复制替换即可,运行后我们会看到一个旋转的白色茶壶。看出来了么?这可是3D的哦,可不是那种不入流的2D了,我们已经步入了3D时代。Option ExplicitDim Tv As New TVEngine 调用tv3d所必需的Dim Scene As New TVScene Dim Mesh As TVMesh 定义一个网格物体Me.Show 显示当前窗口,每次都加上错不了Tv.Init3DWindowed Form1.hWnd 用窗口模式启动tv3dSet Mesh = Scene.CreateMeshBuilder 网格物体初
7、始化,必加Mesh.CreateTeapot 建立一个茶壶Mesh.SetPosition 0, 0, 3 设定物体的位置坐标Do 主循环Tv.Clear 清屏Mesh.RotateY 0.001 沿y轴以0.001每帧的速度转动Mesh.Render 渲染茶壶Tv.RenderToScreen 把所得最终结果渲染到屏幕DoEvents 这句是把线程空出来,使其他的的程序能运行,必加用VB和TV3D轻松制作3D游戏教程2灯光材质贴图 (2011-12-26 14:33:47)第二章在上一章里,看到的白色茶壶就是没有任何材质贴图的物体,我们要让它好看,就必须加入材质贴图和灯光。首先加入贴图吧,就
8、以这张名为pic.jpg贴图为例,大家可以把图片保存到程序目录并改名。首先我们要添加一个tv3d的贴图库Dim TF As New TVTextureFactory 添加一个贴图库然后要指定图片的读取目录Tv.SetSearchDirectory App.Path 设定贴图读取目录为当前目录把贴图读取到贴图库TF.LoadTexture pic.jpg, pic读取名为pic.jpg的贴图,并命名为pic为了能更好的展示贴图,我们把模型换为球体,其他相关代码如下:Mesh.CreateSphere 1 建立一个半径为1的球Mesh.SetTexture GetTex(赋予物体pic贴图运行一下
9、这样就ok了,很简答吧,一共也就4-5行代码。有光照效果才能更真实,我们要给它加上光照,而要让光照的效果发生作用就必须要有材质。同理,和添加贴图一样,先添加库。Dim MF As New TVMaterialFactory 添加一个材质库Dim LE As New TVLightEngine 添加一个灯光库然后设置材质,相关代码:MF.CreateMaterial solid建立名为solid的材质MF.SetAmbient GetMat(), 0, 0, 0, 1环境光MF.SetDiffuse GetMat(), 1, 1, 1, 1 扩散光,即物体的固有颜色MF.SetEmissive
10、GetMat(), 0, 0, 0, 0 自发光MF.SetOpacity GetMat(), 1 不透明度MF.SetSpecular GetMat(), 1, 1, 1, 1高光色MF.SetPower GetMat(), 60散射强度然后把材质赋予物体Mesh.SetMaterial GetMat(赋予物体solid材质这样材质就完成了添加灯光就更简单了灯光有三种,分别是平行光、点光源、聚光灯。平行光就是全场景只有一个方向的光,如果我们的游戏是在室外场景,就应该采用平行光。建立平行光:LE.CreateDirectionalLight Vector(平行光的方向向量), r, g, b,灯的名字,高光范围其中向量不懂的话可以XX,也可以等高中学习了立体几何自然就懂了。Rgb是灯光的红绿蓝三色的比例,可以取0-1的值。点光源,就像我们室内的白炽灯,光线是从一个点向外扩散出去的,用在
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1