用VB和TV3D从零开始轻松制作3D游戏教程.doc

上传人:灯火****19 文档编号:134945451 上传时间:2020-06-10 格式:DOC 页数:56 大小:1.39MB
返回 下载 相关 举报
用VB和TV3D从零开始轻松制作3D游戏教程.doc_第1页
第1页 / 共56页
用VB和TV3D从零开始轻松制作3D游戏教程.doc_第2页
第2页 / 共56页
用VB和TV3D从零开始轻松制作3D游戏教程.doc_第3页
第3页 / 共56页
用VB和TV3D从零开始轻松制作3D游戏教程.doc_第4页
第4页 / 共56页
用VB和TV3D从零开始轻松制作3D游戏教程.doc_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《用VB和TV3D从零开始轻松制作3D游戏教程.doc》由会员分享,可在线阅读,更多相关《用VB和TV3D从零开始轻松制作3D游戏教程.doc(56页珍藏版)》请在金锄头文库上搜索。

1、用VB和TV3D从零开始轻松制作3D游戏教程第一章熟悉vb和tv3d (2011-12-25 23:07:17)转载前言版权所有,转载请注明出处。大家好,我是Reity。这次终于开始做3d游戏的教程了。很多人都以为3d游戏的制作要比2d游戏复杂的多,其实呢,如果知道了制作方法,3d游戏反而比2d游戏的制作花费的精力少。3d本身就是一种视觉效果,即使美工很差,给人的感觉也会比2d的要优越。如果一个游戏含有很多人物动作,3d游戏只需要一个蒙皮的人物模型,然后就可以按照自己的设计拖拽出任意的动作,而2d游戏则需要把每一帧的人物造型全部画出来。比如拳皇这种格斗游戏,每个人物都需要几百张动作图呢。废话不

2、多说了,总之,我希望通过我的教程,能够让你发现制作3d游戏原来如此简单。好了,我们开始吧。第一章熟悉vb和tv3dVb就是Visualbasic,是一种可视化的基础编程语言。为什么用vb呢?因为它简单嘛,学得快的人几个小时就能学会。有人说我只会C+,没关系,原理都是相通的,你学vb只会更快。有人说,我不会vb怎么办?既然是从零开始的教程,我自然已经考虑到了这个问题。既然只是做游戏,又不是制作应用软件,所以我们只需要知道几个常用的命令就可以了。下面列出来就是vb在游戏制作中常用的命令,有vb基础的同学可以直接跳过这里了。1、变量:用来储存数据或文字常用的变量类型Long整数Single浮点,也就

3、是有小数点的数String文字实际上制作游戏只需要用到这3种类型,甚至连long都可用single代替。举例:dim aaa as singleAaa=100就是定义了一个名为aaa的小数变量,且aaa的值为1002、条件命令格式:If条件then结果Else没达到条件的结果End if举例:if aaa=100thenaaa= aaa+1End if当条件a=100时,运行结果aaa=aaa+1,这样aaa的值就变为101了。3、重复命令For next格式:dim i as longfor i= 1 to重复次数重复内容Next举例:for i=1 to 10aaa=aaa+1next也就

4、是把aaa+1重复10次,这样也就相当于是aaa+10了这里顺便提一个命令格式:Do重复内容Loop until条件这个就是无限循环了,不达到条件是不会停止的,这个游戏中只有主循环才会用一次,所以大家知道一下就可以了。4、随机函数rnd*最大范围游戏中会用到很多的随机事件,实际上,世界上根本就没有随机,我们是不知道原理或者不想去细致的讨论全部因素才会用随机来代替。比如敌方的子弹射过来,子弹的路径之所以不同,主要是由枪的后座力、稳定性,子弹的规整度,风力、空气密度,敌人的瞄准能力、反应能力、手臂肌肉强度,以及敌人在射击的一瞬间的心理活动总之,我们不想,也没必要去考虑这些问题,所以在游戏中干脆就把

5、敌人的命中率设为30%就ok啦。代码如下,你可以好好研究下Dim aaa as longAaa=rnd*100If aaa b Then MsgBox 大了 if语句写在一行之内可以省去结尾的end ifIf a b Then MsgBox 小了LoopEnd Sub也许有人会问了,vb不是效率很低么?不是很多人都认为vb不能制作大型游戏么?我要说的是,直接用vb来制作游戏,确实效率很低,这本没有错。这样就必须引出vb亲密的伙伴tv3d了。Tv3d全名TrueVision3D,是美国的一款免费的商业3d游戏引擎。其实tv3d也支持c+,Delphi等编程语言,只不过你学习别的编程语言至少也要1

6、个月。Tv3d是以微软发布的dx作为底层,也就是运行效率和vb没有多少关系,vb只需要调用tv3d命令和一些表层数据的计算就可以了,其余的包括渲染,碰撞都是由tv3d完成,所以制作大型游戏完全没有问题,而且tv3d的效率还是相当高的。Tv3d的官方网站是http:/6.3版本下载(特点,直接支持cs的bsp地图,以及mdl骨骼动画,并且附带很多基础的教程和例子)http:/ ExplicitDim Tv As New TVEngine 调用tv3d所必需的Dim Scene As New TVScene 调用tv3d所必需的Dim Mesh As TVMesh 定义一个网格物体Private

7、Sub Form_Load()Me.Show 显示当前窗口,每次都加上错不了Tv.Init3DWindowed Form1.hWnd 用窗口模式启动tv3dSet Mesh = Scene.CreateMeshBuilder 网格物体初始化,必加Mesh.CreateTeapot 建立一个茶壶Mesh.SetPosition 0, 0, 3 设定物体的位置坐标Do 主循环Tv.Clear 清屏Mesh.RotateY 0.001 沿y轴以0.001每帧的速度转动Mesh.Render 渲染茶壶Tv.RenderToScreen 把所得最终结果渲染到屏幕DoEvents 这句是把线程空出来,使其

8、他的的程序能运行,必加LoopEnd Sub用VB和TV3D轻松制作3D游戏教程2灯光材质贴图 (2011-12-26 14:33:47)转载第二章灯光材质贴图在上一章里,看到的白色茶壶就是没有任何材质贴图的物体,我们要让它好看,就必须加入材质贴图和灯光。首先加入贴图吧,就以这张名为pic.jpg贴图为例,大家可以把图片保存到程序目录并改名。首先我们要添加一个tv3d的贴图库Dim TF As New TVTextureFactory 添加一个贴图库然后要指定图片的读取目录Tv.SetSearchDirectory App.Path 设定贴图读取目录为当前目录把贴图读取到贴图库TF.LoadT

9、exture pic.jpg, pic 读取名为pic.jpg的贴图,并命名为pic为了能更好的展示贴图,我们把模型换为球体,其他相关代码如下:Mesh.CreateSphere 1 建立一个半径为1的球Mesh.SetTexture GetTex(pic) 赋予物体pic贴图运行一下这样就ok了,很简答吧,一共也就4-5行代码。有光照效果才能更真实,我们要给它加上光照,而要让光照的效果发生作用就必须要有材质。同理,和添加贴图一样,先添加库。Dim MF As New TVMaterialFactory 添加一个材质库Dim LE As New TVLightEngine 添加一个灯光库然后设

10、置材质,相关代码:MF.CreateMaterial solid 建立名为solid的材质MF.SetAmbient GetMat(solid), 0, 0, 0, 1环境光MF.SetDiffuse GetMat(solid), 1, 1, 1, 1 扩散光,即物体的固有颜色MF.SetEmissive GetMat(solid), 0, 0, 0, 0 自发光MF.SetOpacity GetMat(solid), 1 不透明度MF.SetSpecular GetMat(solid), 1, 1, 1, 1高光色MF.SetPower GetMat(solid), 60散射强度然后把材质赋予物体Mesh.SetMaterial GetMat(solid) 赋予物体solid材质这样材质就完成了添加灯光就更简单了灯光有三种,分别是平行光、点光源、聚光灯。平行光就是全场景只有一个方向的光,如果我们的游戏是在室外场景,就应该采用平行光。建立平行光:LE.CreateDirectionalLight Vector(平行光的方向向量), r, g, b,灯的名字,高光范围其中向量不懂的话可以百度,也可以等高中学习了立体几何自然就懂了。Rgb是灯光的红绿蓝三色的比例,可以取0-1的值。点光源,就像我们室内的白炽灯,光线是从一个点向外扩散出去的,用在室内效果比较好。建立点光源:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 幼儿教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号