基于Unity3D移动跨平台游戏的设计与实现

2017-11-29 17:26薛玉倩李丽平
大经贸 2017年10期
关键词:跨平台射击引擎

薛玉倩+李丽平

【摘 要】 随着移动设备性能的快速提升,移动通信网络速度的不断提高,致使移动设备迅速普及。而游戏已成为移动端用户的装机必备。移动端游戏开发已成为热门行业,但移动端的系统平台存在多样性,成为移动端游戏开发的瓶颈。采用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

猜你喜欢
跨平台射击引擎
画与理
为什么射击最高的成绩是10.9环,而不是11环
机枪射击十八式
跨平台APEX接口组件的设计与实现
实战化近距离快速射击方法初探
无形的引擎
基于QT的跨平台输电铁塔监控终端软件设计与实现
基于OPC跨平台通信的电机监测与诊断系统
基于B/S的跨平台用户界面可配置算法研究
基于Cocos2d引擎的PuzzleGame开发