3D手机投篮游戏

上传人:ra****d 文档编号:111131137 上传时间:2022-06-20 格式:DOC 页数:46 大小:1.23MB
收藏 版权申诉 举报 下载
3D手机投篮游戏_第1页
第1页 / 共46页
3D手机投篮游戏_第2页
第2页 / 共46页
3D手机投篮游戏_第3页
第3页 / 共46页
资源描述:

《3D手机投篮游戏》由会员分享,可在线阅读,更多相关《3D手机投篮游戏(46页珍藏版)》请在装配图网上搜索。

1、3D手机投篮游戏专业:数字多媒体 班级:计113 姓名:管振华 指导老师:刘江摘要 随着触屏智能手机的普及,越来越多的手机游戏变成年轻一代中打发空余时间的不二之选了。以前是越来越离不开电脑,现在手机也步入离不开的科技产物之一了。以前2D的画面比较受人追捧,到了现在3D的画面感已经俘获了越来越多人的心。题材我选择了篮球,因为篮球被大家所熟知,特别现在工作节奏越来越快,打篮球有些时候也是一种奢侈的事情,所以开发了这个小游戏。软件是在unity3d这个开发平台上进行操作的,利用其中MonoDevelop这个语言开发平台进行编程,利用C#和java脚本进行编程。此款游戏支持在安卓设备上运行,利用手指的

2、触摸效果进行投篮,球随着手指划动的方向飞行,并且速度越快力道越大。进球会自动计数,在60秒之内会有一个分数,并且记录对应的时间点和分数的数据。关键词 unity3d MonoDevelop C# java 安卓手机投篮游戏 触摸The 3D mobile phone game basketball pitchProfession:Digital multimedia Class:ji113 Name:Guan Zhenhua Instructor:Liu JiangAbstract With the popularity of smart mobile phone touch screen,M

3、ore and more mobile phone game into sent spare time young generation of choice.Before is more and more cannot do without computer,now the mobile phone also entered one of the product technology cannot do without.2D picture is the one pursued before,now 3D picture has captured the hearts of more and

4、more people.The subject I chose basketball,because basketball is known.Especially now work in an increasingly fast pace. Play basketball sometimes is a luxury thing, so the development of this game.The software is operated in the unity3d development platform, and using MonoDevelop development platfo

5、rm which the language for programming, the use of C# programming and Java scripting.The game runs on Android devices support.The use of fingers touch effect for shooting.The ball with the fingers paddling the direction of flight, and the faster the greater force.The goals will automatically count, i

6、n 60 seconds. There will be a fraction, and record the corresponding time point and the fraction of data.Key words unity3d MonoDevelop C# java Android mobile phone shooting game touch目录引 言1第一章 概述21.1 课题背景21.2 功能简介2第二章 游戏的策划及准备工作32.1游戏的开发引擎以及语言介绍3Unity3D介绍3C#语言介绍3的介绍32.2 游戏的策划42.2.1游戏类型4运行平台4目标人群4操作方

7、法4呈现技术42.3游戏的准备工作5游戏中图片资源5游戏中声音资源6游戏中模型文件列表7第三章 游戏的架构83.1游戏的界面简介8主菜单界面8游戏界面8关于界面8帮助界面9游戏结束界面9设置界面9记录界面93.2 游戏架构简介10第四章 游戏详细设计114.1 主菜单界面114.2游戏界面14游戏场景的搭建14篮球及脚本的开发15计分触发器的开发17主摄像机设置与脚本开发204.3设置界面214.4关于界面234.5帮助界面25场景搭建25篮球脚本的开发26计分触发器的脚本开发28主摄像机的脚本开发294.6记录界面314.7结束界面37第五章 游戏运行测试395.1游戏测试的目的和意义395

8、.2 游戏运行测试内容39结 论40参考文献41致谢42引 言手持端的工具随着社会的发展越来越先进,从刚开始的大哥大、呼机到现在的智能手机、平板电脑。随着硬件的逐步更新,软件也是在时刻的更新的。软件里面有很多的领域,包括即时聊天工具,文档处理工具以及游戏等。现在,人们的日常生活都离不开这些相关的手机app,打发空余时间利用小游戏,工作利用办公的app。手机游戏在日常生活中占用的比例还是很大的,因为群众具有自发性。游戏是人自发的去玩,而办公软件是属于工作需求。一个是被动一个是主动,所以在市场的需求上面,游戏还是占有主动性。但是办公软件开发难度大,成本高,所以很多新兴的科技公司会着力于开发一些游戏

9、app。目前最流行的系统非Android莫属,其次是ios。当然世面上的游戏基本都有两个以上的版本,Android和ios都会有。现在世面上的游戏种类繁多,但是真正名利双收的并不多。有以下几个因素。第一,玩家的体验感决定游戏是否可以拥有更多更稳定的客户群。刚开始比较火的游戏是叫愤怒的小鸟,这款游戏采取了关卡的制度。具有挑战性,可以体现用户的某一种优于旁人的特性,分高的会引来一些崇拜者。第二,游戏本身的难度问题。一般的游戏都是从低到高的难度来的,如果游戏本身就很难玩的人自然会少,就像数独。如果本身游戏就很简单,玩的人就会更少。第三,游戏的时长问题,更多的手机用户更加乐意花较少的时间去玩手机游戏。

10、据统计,一般人群的手机游戏时间是10-15分钟,这个属于碎片时间。所以游戏开发者要在10-15分钟的时间里面体现出游戏的一些特点,吸引住用户。目前,用户对于画面感的要求越来越高,随着3D电影的大幅推广,越来越多的开发者以及用户也把游戏市场推向了3D的层面。这次的毕业设计创作了3D手机投篮游戏这么一个项目,也是让自己更加熟悉3D游戏的创作,借助一些当前比较流行的开发引擎,根据自己的想象,做一个尽量满足当前社会需求的游戏软件。游戏本身是运行在Android这个当前流行的系统之上,拥有比较庞大的用户群。游戏相对简单,只通过人的想象,掌握好角度力度就可以将球投出去,但是如果需要命中还是需要一定的技巧的

11、,这个就是跟真正的篮球一样,吸引人的地方。在60秒的时间内,如果投入的球越多也就分值越高,这个是挑战人的地方,也可以更好的留住用户。第一章 概述1.1 课题背景在当代的广大青少年群体中,篮球运动已经成为了青春、时尚、活力的象征。3d手机投篮游戏使用了当下非常流行的3D游戏引擎Unity3D进行开发。玩家在游戏中会体验投篮带来的无限乐趣。在这个手持设备横行的时代,人们的日常工作生活的节奏也很快,每一个人也都有碎片的时间,大部分人都会把碎片时间利用在手机游戏上面,篮球是一项发源已久的运动,每个人都知道这么一项运动,也会有很多人会去接触这项运动,所以开发了这么一个手机投篮的游戏,因为自己也比较爱好篮

12、球。开发的时候用户需求,开发中存在的问题也更加容易解决。1.2 功能简介(1)运行游戏,首先进入的是unity自带的欢迎界面。(2)随后进入本游戏的主界面,里面有6个按钮,对应6个界面,单击进入相应界面。(3)在主界面中选择“开始游戏”按钮,进入游戏开始的界面。进入之后,游戏的左上角为分数,右上方为时间剩余。在界面当中,玩家可以选择一个球进行投射,利用手指进行拾取,根据自己想滑动的方向滑动,并且作出位移,球会随着手指的离开而投出去。(4)当时间计数器归零之后,游戏结束,自动切换menu界面。单击“再来一次”按钮,继续游戏;单击“返回菜单”按钮,返回welcome界面;单击“退出”按钮,退出游戏

13、。(5)在主界面选择“设置”按钮进入设置(Options)界面。该界面的主要功能是控制背景音乐和场景音乐的播放。在对应的方框内打勾,并且按确定,设置完成。(6)在主界面中。单击关于,显示游戏对应的版权信息。单击“确认”或者“返回”按钮,返回主界面。(7)在主界面中,单击“帮助”按钮,进入帮助界面。帮助的相应动画会循环播放。(8)在主界面单击“记录”按钮,进入游戏的历史记录界面。在该界面单击“TIME”图标,显示按时间排序的分数记录信息。在该界面的“GRADE”图标,显示按分数排序的分数记录信息。在该界面中,单击“确认”和“返回”按钮返回主界面。(9)在主界面中单击“退出”按钮,退出游戏。第二章

14、 游戏的策划及准备工作2.1游戏的开发引擎以及语言介绍Unity3D介绍Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity类似于Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的图型化开发环境为首要方式的软件其编辑器运行在Windows 和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone、Windows phone 8和Android平台

15、。也可以利用Unity web player插件发布网页游戏,支持Mac 和Windows的网页浏览。它的网页播放器也被Mac widgets所支持。MonoDevelop 是个适用于Linux、Mac OS X和Microsoft Windows的开放源代码集成开发环境,这个开发环境也被运用在了Unity3D当中,其中包含了多种语言,包括java、C#等C#语言介绍C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着

16、惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。C#是一种安全的、稳定的、简单的、优雅的,由C和C+衍生出来的面向对象的编程语言。它在继承C和C+强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C+的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。C#是面向对象的编程

17、语言。它使得程序员可以快速地编写各种基于MICROSOFT .NET平台的应用程序,MICROSOFT .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。C#使得C+程序员可以高效的开发程序,且因可调用由 C/C+ 编写的本机原生函数,因此绝不损失C/C+原有的强大的功能。因为这种继承关系,C#与C/C+具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。的介绍Autodesk Maya是美国Autodesk公司出品的世界顶级的三维动画软件,应用对象是专业的影视广告,角色动画,电影特技等。Maya功能完善,工作灵活,易学易用,制作效率极高,渲染真实感极强,是电影级别的高

18、端制作软件.Maya 集成了Alias、Wavefront 最先进的动画及数字效果技术。它不仅包括一般三维和视觉效果制作的功能,而且还与最先进的建模、数字化布料模拟、毛发渲染、运动匹配技术相结合。Maya 可在Windows NT与 SGI IRIX 操作系统上运行。在目前市场上用来进行数字和三维制作的工具中,Maya 是首选解决方案。2.2 游戏的策划本游戏是使用Unity3D游戏引擎作为开发工具和C#脚本作为开发语言开发的一款休闲体育游戏。本游戏运行的平台为Android 2.0或者更高版本。投篮游戏操作简单,界面具有感染力,采用手持设备作为载体,适合各个阶段的人群在碎片时间进行娱乐,尤其

19、是热爱篮球的人群。玩家手指触碰篮球(3个篮球之间的任意一个),球会随着你手指滑动的方向以及位移的大小给予一定的初速度和角度,当球投进时,分数加1,如果球没进可以继续投,60秒时间到,游戏结束。本游戏使用的是Unity的场景建设技术,利用模型、贴图、灯光以及游戏脚本的开发,实现了游戏的整体开发。2.3游戏的准备工作表2-1游戏中的图片资源图片名用途图片名用途quedinganniu.png确定按钮retry.png再试一次按钮shezhi.png设置按钮shijianbeijing2.png排行榜按时间排序背景图shou.png手动画shut.png退出按钮stop.png停止按钮swall1.

20、jpg左墙面纹理swall2.png中间墙面纹理图swall3.png右墙面纹理timegradebejing.png排行榜按时间排序背景图yibiaoban.png计分计时仪表板hengxian.png横线housegou.png勾icon.png应用程序图标Jilu.png记录按钮jo.png记录界面文字背景lanban.png篮板纹理maohao.png冒号number.png数字pause.png暂停按钮play.png播放按钮fanhuianniu.png返回按钮fanhuicaidan.png返回菜单按钮floor.png地板的贴图guanyuwenzitu.png关于界面文字gu

21、ndongtiao.png滚动条Help1.png帮助按钮图片名用途图片名用途about1.png关于按钮bangzhu.jpg帮助界面的帮助文字background.jpg主菜单背景Bangzuwelcome.jpg加载界面的背景baisefangge.png声音设置界面的方框baseketball.ipg篮球纹理Baisewaikuang.jpg关于界面的背景Basketnet2.png篮网纹理begin.png开始按钮beijingyinyu.png背景音乐文字changjinyinyu.png场景音乐文字d0.png数字0d1.png数字1d2.png数字2d3.png数字3d4.pn

22、g数字4d5.png数字5d6.png数字6d7.png数字7d8.png数字8d9.png数字9dialog.png对话框背景表2-2声音资源列表声音文件名用途声音文件名用途beijingyinyu.mp3背景音乐levellend.ogg游戏结束音效pengzhuang.ogg篮球碰撞音效shoot.ogg篮球发射音效游戏中模型文件列表表2-3模型文件清单文件名用途文件名用途Lankuang3.FBX篮框模型sdds.FBX篮网模型第三章 游戏的架构3.1游戏的界面简介在Unity中,游戏场景是游戏中不可缺少的部分,此款游戏也具有以下7个界面。主界面的“welcome”是转向各个场景的中心

23、场景,在该界面中可以通过单击按钮进入其他的界面,如游戏界面、设置界面等。该场景中的主摄像机“main camera”被挂载了脚本“mainmenu.cs”,背景音乐控制器“BgMusicControl”主要用来控制背景音乐的停止和播放,该游戏对象被挂载了“BeginApp.cs”脚本。游戏界面“basketball”是本游戏的核心界面。这个界面中的多个游戏对象被附加了相应的脚本。该界面中包含的游戏对象有篮球、主摄像机、篮板、篮篮框、篮网、墙壁、计分触发器、透明墙。(1) 篮球。该场景中的篮球“ball0”、篮球“ball1”和篮球“ball2”都挂载了“ball.cs”脚本,主要实现篮球的拾取

24、、发射和碰撞音效控制。(2) 主摄像机主摄像机“main camera”,挂载了“CamScript.cs”脚本,该脚本的功能主要为实现在触摸下改变该场景的视角。(3) 计分触发器平面计分触发器“trigger”,位于篮筐内部,用于篮球投中时触发来记录分数,其挂载了脚本“Score.cs”。关于界面“about”用于显示相关的版本与版本信息。场景中主摄像机“main camera”挂载了脚本“about.cs”,其功能是为了显示版权的相关信息,另外还包括“确定”和“返回”按钮的时间方法。帮助界面“help”是显示帮助信息的场景,该场景是在“basketball”场景的基础上加以修改而成的。该界

25、面包含游戏组成对象有篮球、主摄像机、篮板、篮圈、篮网、左中右墙壁、计分触发器、透明墙,这个场景中也有多个对象被挂载了相应的脚本。(1) 篮球。篮球“ball”、篮球“ball1”、篮球“ball2”都被挂载“HelpBal.cs”脚本,脚本主要功能为实现篮球的自动发射。(2) 计分触发器。计分触发器“trigger”,在“help”场景中,用于触发计分,其挂载了脚本“HelpScore.cs”。(3) 主摄像机主摄像机“main camera”,被挂载了脚本“help.cs”。该脚本用于显示帮助文字,还包含了“暂停”和“停止”按钮的事件处理方法。游戏结束界面“menu”,会在游戏的界面的时间耗

26、尽时自动切换出来。主摄像机“main camera”附加了脚本“Menu.cs”。“menu.cs”脚本的主要功能为显示“返回菜单”按钮、“再来一次”按钮和退出按钮以及处理各个按钮的事件。设置页面“options”中的主摄像机“main camera”附加了“option.cs”,该脚本的主要功能是控制背景音乐和场景音效的播放设置以及设置信息的存储。记录界面“records”的主摄像机“main camera”附加了“record.cs”,主要功能为按照时间和分数的计分信息排序。3.2 游戏架构简介 打开游戏,进入主界面“welcome”,主摄像机“main camera”被激活,挂载的“ma

27、inmenu.cs”和“BeginApp.cs”脚本开始执行,显示主菜单界面。在主菜单中单击“进入游戏”,进图游戏场景“baseketball”,该场景的主摄像机被激活,其上挂载的脚本“CamScript.cs”执行,界面被绘制。当玩家触摸一个静止的球时,在脚本“Ball.cs”的作用下,球被赋予你一个初速度,球在初速度的作用下,按照手指所偏向的角度进行投球,如果球进,触发计分触发器,计分触发器在“Score.cs”的作用下,实现计分,同时“score.cs”脚本还有自动倒计时的功能。在主菜单的中单击“设置”按钮,进入设置界面“options”,该场景的主摄像机被激活,挂载的“option.c

28、s”开始执行,绘制设置界面。在主菜单中单击“关于”按钮,进入关于界面,该场景的主摄像机被激活,挂载的脚本“about.cs”开始执行,绘制关于界面。在主菜单中单击“帮助按钮”,该场景的主摄像机被激活,其上挂载的脚本“help.cs”开始执行,然后,开始绘制按钮和帮助文字以及记分板。篮球在脚本“helpball.cs”的作用下,自动发射,触发到计分触发器时,计分触发器在“HelpScore”脚本的作用下,实现计分。在主菜单中单击“记录”按钮,该场景的主摄像机被激活,其附加的脚本“Record.cs”开始执行,绘制得分记录界面。如图3-1。图 3-1游戏架构图42第四章 游戏详细设计4.1 主菜单

29、界面(1) 新建场景,命名为“welcome”。(2) 将对应的图片资源放入相应的文件夹中。(3) 把“Main Camera”进行标签命名,在tag中的“Element10”中填入“themain”,如图4-1所示。(4) 单击“Main Camera”,在属性查看器中,单击“tag”下拉列表,选择“themain”,作为主摄像机标签。如图4-2所示。图4-1图4-2(5) 创建脚本文件“MainMenu.cs”。并且将脚本拖拽到游戏对象“MainCamera”上面。此代码实现了屏幕自适应,以及页面背景和按钮功能的实现,实现了页面跳转功能。void Start()wbili=Screen.w

30、idth/540.0f;hbili=Screen.height/960.0f;/*屏幕自适应*/x=(Screen.width-240)/2.0f; /获得按钮的横向起始位置 y=170.0f;/纵向首个按钮的起始位置void OnGUI()if(Tex!=null) GUI.DrawTexture(new Rect(0,0,540*wbili,960*hbili),Tex);if(GUI.Button(new Rect(x,y*hbili,240,100*hbili),bu1,MyStyle)Application.LoadLevel(basketball);if(GUI.Button(ne

31、w Rect(x,(y+90)*hbili,240,100*hbili),bu2,MyStyle)Application.LoadLevel(options);if(GUI.Button(new Rect(x,(y+90*2)*hbili,240,100*hbili),bu3,MyStyle)Application.LoadLevel(about);if(GUI.Button(new Rect(x,(y+90*3)*hbili,240,100*hbili),bu4,MyStyle)Application.LoadLevel(help);if(GUI.Button(new Rect(x,(y+9

32、0*4)*hbili,240,100*hbili),bu5,MyStyle)Application.LoadLevel(records);if(GUI.Button(new Rect(x,(y+90*5)*hbili,240,100*hbili),bu6,MyStyle)|Input.GetKeyDown(KeyCode.Escape)Application.Quit();/* *以上实现各个页面的跳转 */(6) 创建音乐背景控制器。创建一个空的游戏对象“BgMusicControl”,同时添加“music”标签。并且在这个空的游戏对象上面添加一个Audio Source组件(在相应的声音文

33、件夹中)。如图4-3。图4-3(7) 创建脚本文件“BeginApp.cs”,此脚本实现功能主要是控制背景音乐的播放,并且将此代码拖曳到“BgMusicControl”上。void Start() playFlag=PlayerPrefs.GetInt(canplay); if(playFlag=1) MyAudioSource.Play();isPlaying = true; void Awake() DontDestroyOnLoad (transform.gameObject);/加载其他场景时保证Gameobjct不销毁。 void Update () playFlag=PlayerP

34、refs.GetInt(canplay); if(playFlag=0)isPlaying = false; else if (playFlag = 1 & !isPlaying)MyAudioSource.Play();isPlaying = true; GameObject gos = GameObject.FindGameObjectsWithTag(music);if(gos.Length1)Destroy(gos1);/*音效控制功能的实现*/4.2游戏界面创建游戏场景“baseketball”,并且添加环境光、模型(贴好图),让游戏界面基本成型。这里边有篮球、篮框、球网、地板、墙壁

35、、灯光、透明的阻挡墙等组件。如图4-3。图4-4(1)建设好必要的场景文件之后,就是脚本代码的书写。“Ball.cs”中前面要先进行变量的声明和“start”方法的重写,在方法中获取音效设置信息,并设置3个球之间不进行碰撞检测,脚本代码如下。void Start () yinxiao=PlayerPrefs.GetInt(yinxiao);Physics.IgnoreCollision(ballpre1.collider, collider);Physics.IgnoreCollision(ballpre2.collider, collider);/* *变量声明以及控制球之间不要相互碰撞 *

36、/(2) 球的“update”方法,这个方法定义了球可以被拾取并且发射,脚本代码如下。void Update () foreach(Touch touche in Input.touches)/对触控事件遍历 RaycastHit hit;/定义拾取射线触碰对象 if(touche.phase=TouchPhase.Began) xzFlag=false;/指定拾取射线 if(Physics.Raycast(ray,out hit,Mathf.Infinity,mask.value)if(&transform.position.y=11.1)/*可拾取的范围 */ xzFlag=true; e

37、lse if(touche.phase=TouchPhase.Ended) if(xzFlag) if(yinxiao=1)neShot(MyAudio); /音效可播放 rigidbody.WakeUp(); float delatex=(endX-startX)/300.0f;/计算触摸的位移 并转化为可用值 float delatey=(endY-startY)/300.0f; if(delatex=-1)alpha1=Mathf.Abs(delatex);elsealpha1=1;if(delatey=-1) alpha2=Mathf.Abs(delatey);elsealpha2=1

38、;if(delatey0)if(delatex0)/发射角偏右this.rigidbody.velocity=new Vector3( minXsp+(maxXsp-minXsp)*alpha1,minYsp+(maxYsp-minYsp)*alpha2,zSpeed); if(delatex=0)/给予y轴和z轴初速度if(delatex0)/发射角偏左 if(Input.GetKeyDown(KeyCode.Escape)Application.LoadLevel(welcome);(3)碰撞音效的控制。void OnCollisionEnter()if(yinxiao=1)/(1) 创建

39、“Plane”对象,命名为“trigger”。如图4-5。图4-5(2) 编写计分触发器脚本“Score.cs”,并且将此脚本拖曳到对象“trigger”上。首先是变量的声明,然后是Start方法和Awake放发以及OnTrigger事件的重写。这两个方法和事件在特定的情况下分别被调用和触发,脚本代码如下。void Start () wbili=Screen.width/540.0f;hbili=Screen.height/960.0f;InvokeRepeating(Countdown,1,1);/1秒后调用Countdown函数,之后每1秒调用一次void Awake()currentDa

40、te=PlayerPrefs.GetString(date);currentScore=PlayerPrefs.GetString(score);void OnTriggerEnter() score+;(3)倒计时的方法以及其取消调用。void Update () if(timeLife -1)CancelInvoke();void Countdown()timeLife-;(4) 接着需要重写OnGUI方法,实现系统时间和得分信息的存取。在绘制方面还实现了仪表板和得分与时间的实时绘制,脚本代码如下。void OnGUI ()GUI.DrawTexture (new Rect (0, 0,

41、540*wbili, 150*hbili),textureToDisplay);if(score=9)tempTexture=scoresscore;GUI.DrawTexture (new Rect (100*wbili, 48*hbili,22*wbili,80*hbili),tempTexture);elseGUI.DrawTexture (new Rect (100*wbili, 48*hbili,22*wbili,80*hbili),scores(score%10);GUI.DrawTexture (new Rect (60*wbili, 48*hbili,22*wbili, 80*

42、hbili),scores(score-score%10)/10);/*得分绘制*/if(timeLife=0)GUI.DrawTexture (new Rect (460*wbili, 48*hbili ,22*wbili, 80*hbili),scores(0);else if(timeLife0)GUI.DrawTexture (new Rect (460*wbili, 48*hbili ,22*wbili, 80*hbili),scores(timeLife);elseGUI.DrawTexture (new Rect (460*wbili, 48*hbili ,22*wbili, 8

43、0*hbili),scores(timeLife%10); GUI.DrawTexture (new Rect (420*wbili, 48*hbili,22*wbili,80*hbili),scores(timeLife-timeLife%10)/10);/*得分绘制*/if(timeLife=0)timeLife=-3;now=DateTime.Now;var temps=(now.Month+).Length=1?(0+now.Month):(+now.Month)+-+(now.Day+).Length=1?(0+now.Day):(+now.Day)+ var tempdate=*+

44、temps+currentDate;PlayerPrefs.SetString(date,tempdate);var tempscoe= *+(score0) if(Input.GetTouch(0).phase = TouchPhase.Moved)delateY=Input.GetTouch(0).deltaPosition.y; transform.Rotate(-delateY*rotateAlpha,0,0);transform.Translate(0,-delateY*liftAlpha,0); if(Input.GetTouch(0).phase = TouchPhase.End

45、ed)transform.rotation=rotatee;transform.position=translatt;4.3设置界面首先新建一个名为“options”设置界面的主要功能是控制背景音乐和场景音乐的是否播放。该界面包含一个主摄像机,在主摄像机附有“Options.cs”脚本。效果图如图4-6所示。图4-6(1) 新建脚本,命名为“Options.cs”,脚本开发首先是声明变量和Start方法,实现设置信息的获取和复选款选中状态的初始化。脚本代码如下。void Start () wbili=Screen.width/540.0f;hbili=Screen.height/960.0f;

46、int ww=PlayerPrefs.GetInt(canplay);int cc=PlayerPrefs.GetInt(yinxiao);if(cc=1) ok1=true;else ok1=false;if(ww=1) ok=true;else ok=false;(2)OnGUI方法的重写,利用按钮和贴图实现了复选框的模拟。在触控下以贴图的方式进行交互,脚本代码如下。void OnGUI()GUI.DrawTexture(new Rect(0,0,540*wbili,960*hbili),Tex); GUI.Label(new Rect(100*wbili,360*hbili,430*wb

47、ili,100*hbili),Tex1);GUI.Label(new Rect(100*wbili,470*hbili,430*wbili,100*hbili),Tex2);if(GUI.Button(new Rect(100*wbili,700*hbili,260*wbili,130*hbili),bu1,MyStyle)if(ok) PlayerPrefs.SetInt(canplay,1);elsePlayerPrefs.SetInt(canplay,0);if(ok1) PlayerPrefs.SetInt(yinxiao,1);elsePlayerPrefs.SetInt(yinxi

48、ao,0); Application.LoadLevel(welcome);if(GUI.Button(new Rect(320*wbili,700*hbili,260*wbili,130*hbili),bu2,MyStyle)Application.LoadLevel(welcome);if(GUI.Button(new Rect(380*wbili,375*hbili,40*wbili,40*hbili),bu3,MyStyle)ok=!ok;if(ok)GUI.DrawTexture(new Rect(380*wbili,375*hbili,30*wbili,30*hbili),yes)

49、;if(GUI.Button(new Rect(380*wbili,485*hbili,40*wbili,40*hbili),bu4,MyStyle)ok1=!ok1;if(ok1) GUI.DrawTexture(new Rect(380*wbili,485*hbili,30*wbili,30*hbili),yes);(3) 手机返回键的设置。void Update () if(Input.GetKeyDown(KeyCode.Escape)Application.LoadLevel(welcome);(4)最后将脚本和相应的素材进行拖拽。如图4-7所示。图4-74.4关于界面关于界面主要是

50、显示了一张贴图和基本跳转按钮的功能实现。效果如图4-8。图4-8首先是创建一个新的场景,名字为“about”。接下来进行脚本的书写,主要实现了两个按钮的返回“welcome”界面的功能。代码如下。void OnGUI()GUI.DrawTexture(new Rect(0,0,540*wbili,960*hbili),Tex); GUI.DrawTexture(new Rect(20*wbili,230*hbili,500*wbili,500*hbili),Tex1);if(GUI.Button(new Rect(100*wbili,750*hbili,180*wbili,90*hbili),

51、bu1,MyStyle)Application.LoadLevel(welcome);if(GUI.Button(new Rect(320*wbili,750*hbili,190*wbili,90*hbili),bu2,MyStyle)Application.LoadLevel(welcome);void Update () if(Input.GetKeyDown(KeyCode.Escape)Application.LoadLevel(welcome);最后分别将所学的图片以及脚本拖到主摄像机上。如图4-9所示。图4-94.5帮助界面利用篮球、篮框、篮网、篮板以及墙壁搭建一个合适的场景。如图

52、4-10所示。图4-10场景搭建完之后要进行对象上脚本文件的开发。(1) 该场景中篮球的脚本“HelpBall.cs”中,首先是变量声明和Start方法的重写。主要实现了音效参数的获取和物理碰撞检测的设置,具体代码如下。 void Start () yinxiao=PlayerPrefs.GetInt(yinxiao);Physics.IgnoreCollision(ballpre1.collider, collider);Physics.IgnoreCollision(ballpre2.collider, collider);/*变量声明,以及球之间不要相互碰撞*/(2) 实现循环头球和根据

53、参数播放碰撞音效的功能,具体代码如下。void Update () rigidbody.WakeUp(); jumpFlag=0; jumpFlag=0; jumpFlag=4; StartCoroutine(back();(3) 实现循环投球和根据参数“canplay”播放篮球发射和碰撞音效的功能。具体代码如下。void OnCollisionEnter()if(yinxiao=1)IEnumerator back()if(jumpFlag=4)yield return new WaitForSeconds(4); balls0.position=new Vector3(3.961248f,

54、10.96818f,2.402708f); yield return new WaitForSeconds(4); balls1.position=new Vector3(4.461248f,10.96818f,2.402708f); yield return new WaitForSeconds(8); balls2.position=new Vector3(4.961248f,10.96818f,2.402708f); (4)最后把脚本拖拽到三个球上面。如图4-11所示。图4-11(1) 计分触发器命名为“HelpScore.cs”,首先是变量声明和Start方法的重写,以及重写OnTri

55、ggerEnter方法。代码如下。void Start () wbili=Screen.width/540.0f;hbili=Screen.height/960.0f;void OnTriggerEnter() score+;(2) 然后是重写OnGUI方法,实现得分与时间的实时绘制,脚本代码如下。void OnGUI ()GUI.DrawTexture(new Rect(0, 0, 540*wbili, 150*hbili),textureToDisplay);if(score=9)var tempTexture=scoresscore;GUI.DrawTexture (new Rect (100*wbili, 48*hbili,22*wbili,80*hbili),tempTexture);elseGUI.DrawTexture (new Rect (100*wbili, 48*hbili,22*wbili,80*hbili),scores(score%10);GUI.DrawTexture (new Rect (60*wbili, 48*hbili,22*wbili, 80*hbili),scores(score-score%10)/10);GUI.DrawTexture (new Re

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!