图3.10 游戏内树木造型效果
3.2 游戏脚本的设计
游戏脚本是控制游戏运行,操作,显示等,是游戏的控制中心,通过游戏脚本的编写,来实现游戏中赛车通过键盘按键的控制,游戏中对手的自动驾驶以及游戏中关卡的切换及UI的显示。游戏脚本采用javascript语句编写,
3.2.1 游戏控制中心脚本的设计
游戏控制中心是整个游戏脚本中的核心脚本,起到控制游戏基础运行及调用其余脚本的作用。游戏控制中心设计具备以下功能:
(1) 游戏中检查点的定义
游戏采取赛车竞速的方式判定胜利,每个赛车根据关卡的不同比较到达终点的时间,而赛道则是由一个一个的赛道模块拼接而成,游戏的圈数的统计通过计算游戏模块的数量来得到。故需要引入检查点的概念,检查点用于设定游戏中跑道模块的数量及顺序,以便游戏控制中心计算及显示游戏圈数和对非玩家控制角色进行自动驾驶提供路线计算。申明方法如下:var CheckPoints:Transform[];Transform为参数变量类型。游戏脚本通过以下的设计来实现圈数及时间的判断:
function Update ()
{
if ( SpawnTimeCount > 0 )
{
SpawnTimeCount -= Time.deltaTime; //计数为每一次通过道路模块后减一
}
else if ( ItemCount < MaximumItems )
{
SpawnTimeCount = Random.Range(SpawnTime.x, SpawnTime.y); //储气罐出现的时间计算
ItemCount++; //储气罐数目增加
ItemCopy = Instantiate(Items[Mathf.Floor(Random.Range(0, Items.length - 1))], CheckPoints[Mathf.Floor(Random.Range(0, CheckPoints.length - 1))].position + Vector3.up * 0.3, Quaternion.identity);//储气罐出现的位置
ItemCopy.transform.Translate(Vector3.right * Random.Range(-3,3), Space.Self);
}
}
(2) 游戏中圈数LapsToWin的定义
圈数是游戏中判定比赛的重要参数之一,在游戏中可根据游戏场景的大小来调整游戏的合理圈数。圈数参数的定义为整型,初始值设置为3圈,申明方法如下:
var LapsToWin:int=3;
(3) 游戏中开始倒计时的定义及设计
为了让玩家在游戏开始前有很好的准备时间,所以引入开始倒计时的概念,在游戏开始运行时给与比赛前倒计时,通过读秒及UI界面变化的方式来进行提示游戏开始时的时间。游戏倒计时因通常为秒钟,故定义为浮点型。定义方法为:
var countdowntostart:float = 4;
(4) 游戏中储气罐的设计
为增加游戏的趣性,在游戏进行中会在游戏路面上随机出现一些储气罐,当赛车遇到储气罐会产生短暂的速度加成。储气罐采用调用引擎接口的方法实现,脚本中申明的方法如下:var items:transform[];储气罐的同样也具有脚本控制,控制储气罐的最大数量等。游戏中储气罐的出现数量及出现位置则有本脚本来实现。
(5) 游戏中游戏结束后延迟时间的设计
游戏结束后,画面会停留几秒等待游戏控制器进行关卡及场景的切换,同样额,延迟时间也为秒钟,通过定义参数值和调用引擎接口来实现,定义语句为:var racenddelay:float = 4; 游戏延迟功能的触发实现过程如下:
if ( Players == 0 )
{ 3d赛车游戏设计(unity3D+3dsmax+游戏引擎)(7):http://www.751com.cn/jisuanji/lunwen_990.html