薛玉倩+李丽平
【摘 要】 随着移动设备性能的快速提升,移动通信网络速度的不断提高,致使移动设备迅速普及。而游戏已成为移动端用户的装机必备。移动端游戏开发已成为热门行业,但移动端的系统平台存在多样性,成为移动端游戏开发的瓶颈。采用Unity3D进行游戏开发,可以实现Unity3D移动跨平台游戏。
【关键词】 Unity3D 移动设备 4G 跨平台
1 引言
近年来,随着4G的出现,移动互联网的网速大幅度提升,移动互联网发展速度异常迅猛。移动设备的硬件也以极为迅速的速度在发展。移动设备的CPU由原先的单核发展到现在的四核,存储空间也由以前的几K发展到128G。移动设备已成为人們日常生活、办公等主要使用的终端。而游戏已成为移动设备的装机必备,近几年游戏产业也在发生着巨变,大型客户端游戏在火爆几年后,网页游戏又快速发展,玩家数量快速增长。但随着移动设备的普及,移动平台上的高质量3D游戏已成为现实,这样大量的玩家必然被吸引到移动端。另外,越来越多的移动平台也加入了竞争,比如ios、Android、Windows Phone、Black Berry,这就带来了移动端游戏跨平台的问题。Unity3D是由Unity Technologies开发的跨平台的,使游戏开发者能轻松完成高运行效率游戏开发的游戏引擎。Unity3D具有异常强大的功能,除了可以跨平台以外,还能解决由于屏幕尺寸不同、操作方式差异,硬件条件相差较大等问题,大幅度提高了游戏的可移植性[1]。
2 游戏功能设计
目前,移动设备游戏的开发非常火爆,越来越多的人都在空闲时间玩手机,这也是移动端游戏受欢迎的原因之一。所以移动端手机的设计要操作简单、便捷,因此采用关卡式,随时可以停下来。本文采用Unity3D开发坦克射击游戏,靠炮击目标数来获得相应分数 [2]。
3 基于Unity3D移动跨平台游戏的实现
3.1 游戏场景
射击类的游戏其都会拥有较大的场景,因此其场景无法在游戏界面中全面显示,因此要给游戏界面添加一个UV动画。在游戏中,游戏背景是一直向下移动,主角在不停的移动,从而使玩家感觉整个画面在移动,因此有一种动态视觉效果。
动态背景的原理就是用一张图片进行循环滚动,从而实现动画过程,为了实现背景的循环滚动,需将其循环播放模式设置为Loop[3]。
3.2 主角移动与射击的实现
在游戏中主角需要移动、射击、自身旋转、与炮台旋转。MonoDevelop类中有一个Update函数,在每一帧执行时,该函数都会被调用。移动、射击、自身旋转与炮台旋转代码如下[3]。
x=Input.GetAxis("Horizontal")*Time.deltaTime*speed;
z=Input.GetAxis("Vertical")*Time.deltaTime*speed;
transform.Translate(x,0,z);
if (Input.GetMouseButtonDown (0)) {
GameObject b=(GameObject)Instantiate(ball,transform.position,transform.rotation); b.rigidbody.AddForce(transform.up*1000);
}
if (Input.GetKey (KeyCode.Z)) {
transform.rotation = Quaternion.Slerp (transform.rotation, Quaternion.Euler (60,0,0), Time.deltaTime);
transform.rotation = Quaternion.Slerp (transform.rotation, Quaternion.Euler (60,-30,0), Time.deltaTime);
}
if (Input.GetKey (KeyCode.C)) {
transform.rotation = Quaternion.Slerp (transform.rotation, Quaternion.Euler (60,0,0), Time.deltaTime);
transform.rotation = Quaternion.Slerp (transform.rotation, Quaternion.Euler (60,30,0), Time.deltaTime);
}
3.3 目标的产生与消灭
在游戏中射击目标是动态产生的,其产生的代码如下[4]。
float x = pos.transform.position.x;
float y = 1;
float z = pos.transform.position.z;
for (int m=0; m<10; m++) {
for(int i=0;i<10;i++){
Instantiate(comp,new Vector3(x+m,y+i,z+50),Quaternion.identity);
}
}
当游戏目标被击打到地面以下,主角就应加分。其代码如下。
if(gameObject.transform.position.y<0)
{sj=gameObject.Find("Main Camera").GetComponent(sheji).sjshu;
xm=++gameObject.Find("Main Camera").GetComponent(sheji).dstshu; if(xm>20)
{gameObject.Find("wenzi").GetComponent(GUIText).text="congradulation,success";
gameObject.Find("Main Camera").GetComponent(sheji).enabled=false;
}
Destroy(gameObject);
}
结 语
本文具体分析了Unity3D引擎的特性,研究了Unity3D引擎在开发移动设备游戏过程中的关键技术,并在此基础以Unity3D游戏引擎为开发平台开发了射击类游戏项目,并最终实现了跨平台。
【参考文献】
[1]刘光然.虚拟现实技术[M].北京:清华大学出版社,2011.
[2] 汪超顺.虚拟现实的特点与应用[J].科技大观园,2009,(22):43-44.
[3] 宣雨松.Unity3D游戏开发[M]北京:人民邮电出版社,2012.
[4] HengLia,MiaojiaLua,GregGhana,etal.Proactive training system for safe and efficient precast installation [J].Automation in Construction,2015,49(A):163-174.endprint