用VB和TV3D从零开始轻松制作3D游戏教程 第一章 熟悉vb和tv3d
  (2011-12-25 23:07:17)
转载
前言
版权所有,转载请注明出处。
大家好,我是Reity。
这次终于开始做3d游戏的教程了。很多人都以为3d游戏的制作要比2d游戏复杂的多,其实呢,如果知道了制作方法,3d游戏反而比2d游戏的制作花费的精力少。3d本身就是一种视觉效果,即使美工很差,给人的感觉也会比2d的要优越。如果一个游戏含有很多人物动作,3d游戏只需要一个蒙皮的人物模型,然后就可以按照自己的设计拖拽出任意的动作,而2d游戏则需要把每一帧的人物造型全部画出来。比如拳皇这种格斗游戏,每个人物都需要几百张动作图呢。废话不多说了,总之,我希望通过我的教程,能够让你发现制作3d游戏原来如此简单。好了,我们开始吧。
 
第一章  熟悉vbtv3d
Vb就是Visualbasic,是一种可视化的基础编程语言。为什么用vb呢?因为它简单嘛,学得快的人几个小时就能学会。有人说我只会C++,没关系,原理都是相通的,你学vb只会更快。有人说,我不会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)这条语句是随机取09899个整数,而我们要199的数,所以后边要加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的是 uevision3d
6.3版本下载(特点,直接支持csbsp地图,以及mdl骨骼动画,并且附带很多基础的教程和例子)
uevision3d/downloads/download.php?go=2&file=16&mirror=23

6.5版本下载(特点,拥有更强大的特效,如水面反射、动态阴影、泛光、物理引擎等。支持win7
uevision3d/downloads/download.php?file=28
 
我要教大家的就是6.5版本,一个更加高效率,更强大特效的版本。
之前的6.3版本使用的人已经很多了,也有很多人制作出了很棒的游戏。比如《梦幻战争》系列,这可是一个人制作的哦。




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




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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。