VB怎么做3D程序 本人就一VB小白

 我来答
木秀林枫
2015-10-01 · TA获得超过1.2万个赞
知道大有可为答主
回答量:6138
采纳率:0%
帮助的人:3128万
展开全部
第一章 熟悉vb和tv3d
Vb就是Visualbasic,是一种可视化的基础编程语言。为什么用vb呢?因为它简单嘛,学得快的人几个小时就能学会。有人说我只会C++,没关系,原理都是相通的,你学vb只会更快。有人说,我不会vb怎么办?既然是从零开始的教程,我自然已经考虑到了这个问题。既然只是做游戏,又不是制作应用软件,所以我们只需要知道几个常用的命令就可以了。下面列出来就是vb在游戏制作中常用的命令,有vb基础的同学可以直接跳过这里了。

1、 变量:用来储存数据或文字
常用的变量类型
Long 整数
Single 浮点,也就是有小数点的数
String 文字
实际上制作游戏只需要用到这3种类型,甚至连long都可用single代替。

举例:
dim aaa as single
Aaa=100
就是定义了一个名为aaa的小数变量,且aaa的值为100

2、 条件命令
格式:
If 条件 then
结果
Else
没达到条件的结果
End if
举例:if aaa=100 then
aaa= aaa+1
End if
当条件a=100时,运行结果aaa=aaa+1,这样aaa的值就变为101了。
3、 重复命令For next
格式:
dim i as long
for i= 1 to 重复次数
重复内容
Next
举例:
for i=1 to 10
aaa=aaa+1
next
也就是把aaa+1重复10次,这样也就相当于是aaa+10了

这里顺便提一个命令
格式:
Do
重复内容
Loop until 条件
这个就是无限循环了,不达到条件是不会停止的,这个游戏中只有主循环才会用一次,所以大家知道一下就可以了。
4、 随机函数 rnd*最大范围
游戏中会用到很多的随机事件,实际上,世界上根本就没有随机,我们是不知道原理或者不想去细致的讨论全部因素才会用随机来代替。比如敌方的子弹射过来,子弹的路径之所以不同,主要是由枪的后座力、稳定性,子弹的规整度,风力、空气密度,敌人的瞄准能力、反应能力、手臂肌肉强度,以及敌人在射击的一瞬间的心理活动……总之,我们不想,也没必要去考虑这些问题,所以在游戏中干脆就把敌人的命中率设为30%就ok啦。
代码如下,你可以好好研究下
Dim aaa as long
Aaa=rnd*100
If aaa<=30 then
命中
Else
没命中
End if
基本就是这么几个常用的东西啦,只要熟练掌握这几个命令,简单的游戏都可以做了。不过我还是建议你能系统的自学一下vb,这样会更熟悉Vb一些。

我们把这几个命令用猜数字的游戏实际应用一下,这是代码,直接全部替换到vb的窗口代码中。里面有些命令我们是用不到的,所以不需要记住。“’”符号后面的内容是注释,不影响代码。

Option Explicit '这条语句是表示所用到的变量必须先定义,建议每次开头都加上这条语句,养成好习惯。
Private Sub Form_Load()
Dim a As Long
Dim b As Long '定义a,b两个整数型变量
Randomize Time '这个语句是让每次的随机值都不一样,如果不加,你测试的时候会发现,每次随机的值都是一样的,但是生成exe以后不会,所以只用于测试。

b = Int(Rnd * 99) + 1 'rnd是随机函数,游戏中非常常用,大家记住Int(Rnd * 99)这条语句是随机取0—98共99个整数,而我们要1—99的数,所以后边要加1。

Do’循环

a = InputBox("请猜一个数,此数为1-99之间。") '这条语句是让你输入一个数然后储存到变量a中。

If a = b Then 'a=b自然就是猜对了
MsgBox "猜对了!"
End '然后结束程序
End If

If a > b Then MsgBox "大了" 'if语句写在一行之内可以省去结尾的end if

If a < b Then MsgBox "小了"

Loop

End Sub

也许有人会问了,vb不是效率很低么?不是很多人都认为vb不能制作大型游戏么?
我要说的是,直接用vb来制作游戏,确实效率很低,这本没有错。这样就必须引出vb亲密的伙伴tv3d了。Tv3d全名TrueVision3D,是美国的一款免费的商业3d游戏引擎。其实tv3d也支持c++,Delphi等编程语言,只不过你学习别的编程语言至少也要1个月。Tv3d是以微软发布的dx作为底层,也就是运行效率和vb没有多少关系,vb只需要调用tv3d命令和一些表层数据的计算就可以了,其余的包括渲染,碰撞都是由tv3d完成,所以制作大型游戏完全没有问题,而且tv3d的效率还是相当高的。
Tv3d的官方网站是 http://www.truevision3d.com
6.3版本下载(特点,直接支持cs的bsp地图,以及mdl骨骼动画,并且附带很多基础的教程和例子)
http://www.truevision3d.com/downloads/download.php?go=2&file=16&mirror=23

6.5版本下载(特点,拥有更强大的特效,如水面反射、动态阴影、泛光、物理引擎等。支持win7)
http://www.truevision3d.com/downloads/download.php?file=28

我要教大家的就是6.5版本,一个更加高效率,更强大特效的版本。
之前的6.3版本使用的人已经很多了,也有很多人制作出了很棒的游戏。比如《梦幻战争》系列,这可是一个人制作的哦。

但是用6.5制作的游戏确不多见,主要原因就是因为例子和教程比较少,所以希望我的教程能够填补这一空白,使大家对6.5能有个进一步的了解。我们也来看看6.5强大的特效。

好,我们下载完成后安装,然后打开vb,点上面菜单中的工程,然后点引用。注意这是很重要的一步,如图,把tv3d的dll引用了,点确定,这样才能让vb能够调用tv3d。

像往常一样,我们先来个helloworld吧,来做我们的第一个tv3d程序。
下面是全部代码,直接复制替换即可,运行后我们会看到一个旋转的白色茶壶。看出来了么?这可是3D的哦,可不是那种不入流的2D了,我们已经步入了3D时代。

Option Explicit
Dim Tv As New TVEngine '调用tv3d所必需的
Dim Scene As New TVScene '调用tv3d所必需的
Dim Mesh As TVMesh '定义一个网格物体

Private Sub Form_Load()
Me.Show '显示当前窗口,每次都加上错不了
Tv.Init3DWindowed Form1.hWnd '用窗口模式启动tv3d

Set 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 '这句是把线程空出来,使其他的的程序能运行,必加
Loop

End Sub
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式