那抱歉,上次那个Unity+kinect还没有更新,最近在深一步研究,不久将更新(绝对不负众望)!现在进入正题,十分钟带你打造unity3D第一人称射击游戏!
看完本篇博客,你将学会第一人称控制,粒子的添加,碰撞的检测,鼠标的监听,画2d图像,预制物体克隆,添加力,添加声音等等!(本篇博客假设你已经对unity稍微有点了解)
一,打开unity,创建一个场景,添加一个plane,(gameobject->createother->plane)。
二,添加虚拟第一人称任务(现在没搞模型,模型后面可以自己添加);Assert->importpackages->Charactercontroll,之后你将Project面板里面看到这个资源包,打开里面的charactercontroll文件,将里面的first Person controll拖动到合适的位置。
三,然后我们将添加一个虚拟的枪口,作为子弹的发生点!这个你可以创建一个椭圆,放在摄像机的最中间
然后要将椭圆设置为摄像机的子物体,这样他将随着摄像机运动(不能设置为任务模型的子物体,因为任务模型的不能上下移动,也就不是这样后不能上下射击)。也就是在hierahcry面板中点击你创建椭圆,拖到摄像机上,这样他就成了摄像机的子物体。可以点击运行测试下,你会发现这东西只是虚拟枪口,所以我们设置它看不见,点击椭圆,在修改面板上,有个MeshRender,你单击下,椭圆就看不见了,但是它存在,然后再点击CapsuleColisder,取消他的碰撞(以免影响子弹的射击);
三,子弹的射击
我们首先创建一个圆,(用这个圆来模拟子弹,如果你自己有子弹模型,就用子弹模型),然后在project中创建一个prefab,用于之后的克隆子弹,现在我们来子弹一点火焰效果,Assert->importpackage->particles导入粒子,点击里面的fire,将里面的Flame拖到游戏中,位置和你创建的球(子弹)一样,然后将你设置的,然后同样的方法,将火焰设置为,子弹的子物体,这样,火焰将和子弹一起运动,自己在属性面板里 修改火焰的大小,然后将子弹拖到你创建的prefab中,修改prefab的名字为balls!添加一个刚体属性,Rigidbody(Addcomment->ragidbody)然后删除游戏中的子弹(嗯,删除)!现在子弹的预制物体已经创建好了,现在我们来射击!
四 ,点击鼠标,发生子弹
现在 就是敲代码码的时候了
var aim:Transform; //克隆子弹 private var ball:Transform; //绘制准星的材质 var material:Material; function Start () { } function Update () { //将鼠标的图标隐藏 Screen.showCursor=false; //var zj=Vector3(Screen.width/2,Screen.height/2,0); //var ray:Ray=Camera.main.ScreenPointToRay(Input.mousePosition); //定义一个方向,为发射点y轴方向 var dir=aim.transform.TransformDirection(Vector3.up); //var dir=ray.direction; //按下鼠标左键 if(Input.GetMouseButtonDown(0)){ //实列化一个球,发射点的位置, ball=Instantiate(balls,aim.position,Quaternion.identity); //在某一个方向加一个力 ball.rigidbody.AddForce(dir.normalized*1000); print("----------->>>"); //三秒后删除小球 Destroy(ball.gameObject,3); } }
这里用到了,Screen.showCursor=false;将鼠标隐藏,要将他放在updatae中,放在start中不行var dir=aim.transform.TransformDirection(Vector3.up);这是定义一个方向,子弹将以这个方向射击
其他的没什么解释的了,注释很详细了,方法里面传入的参数,查一下API文档就行
五 ,现在们开始绘制准星
//绘制准星的材质
var material:Material;
先定义 一个材质,用来绘制图像
//绘制准星 function OnPostRender(){ DrawRecent(Screen.width/2,Screen.height/2,10,10); } //绘制四边形的方法 function DrawRecent(x:float,y:float,width:float,height:float){ //材质通道设置为默认的0 material.SetPass(0); //绘制2D图形 GL.LoadOrtho(); //绘制长方体 GL.Begin(GL.QUADS); //传入四个点的相对屏幕的坐标,先后分别是左上角,左下角,右下角,右上角 GL.Vertex(new Vector3(x/Screen.width,y/Screen.height,0)); GL.Vertex(new Vector3(x/Screen.width,(y+height)/Screen.height,0)); GL.Vertex(new Vector3((x+width)/Screen.width,(y+height)/Screen.height,0)); GL.Vertex(new Vector3((x+width)/Screen.width,y/Screen.height,0)); //结束绘画 GL.End(); }
这个没什么好解释的,注释有,按照各个规则就是
然后就是,如果你射击到了敌人,敌人就着火
四,射击敌人
首先我们,创建几个cube,这个用来模拟敌人,如果你有好的模型,就用模型。给cube创建ridibody
然后给它一个标签,在属性面板上面有个Tag,点击,选择player,给个player标签,你也可以点击addTag自己添加一个Tag,现在我们创建一个prefab预制火火焰,创建一个空物体,将先前导入的fires拖到空物体中
将空物体放入prefab中,改名为fires
现在 我们添加碰撞事件
新建一个脚本,
#pragma strict //预制火焰 var fires:Transform; //克隆火焰 private var fire:Transform; function Start () { } function Update () { }//碰撞监听 function OnCollisionEnter(other:Collision){ //如果碰到的事cube(先前我们将cube的tag设置成了player) if(other.transform.tag=="Player"){ //克隆一个火焰 fire=Instantiate(fires,other.transform.position,Quaternion.identity); //设置火焰的父对象为箱子,这样火焰将和物体一起运动, fire.transform.parent=other.transform;} }
五,你想加入声音嘛?如果你想,接着看两种方式添加音乐,首先添加背景音乐,点击摄像机,AddCommpent->aduio->aduiosource
首先 下载你需要的背景音乐,将音乐拖进Asset文件夹中,然后将音乐拖进刚才添加的aduiosource的中
然后 教你添加动作音效,在第一和代码中加入var music:AudioClip;
然后再发生子弹的那个方法中,AudioSource.PlayClipAtPoint(music,transform.position);播放,
六:挂载脚本
你首先将以第一个脚本,挂到摄像机上面,然后将第一个frefab(balls)拖到变量中
第二个脚本放在balls上,将fires和音乐拖到变量中!!
OK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 现在开火!!!!!!!!!
相关推荐
干货 十分钟带你从入门到进阶python爬虫.docx
内容概要 1. 该资源包是Element Plus UI实现的一个省市选择的用户演示Element Plus如何在Vue 3项目中安装和...2. 该源码需要先安装Node.js和Vue,具体使用可以参考我的博文《十分钟带你入门Element Plus UI 框架开发》
1. 这是《十分钟带你入门HTML&HTML5网页制作》博文配套源码包; 2. 通过这份源码与对应的博文,可以快速入门HTML5 Web页面的开发; 3. 本源码包使用简单,无需搭建复杂的开发环境,只需一个文本编辑器(如记事本程序...
人教部编版一年级上册 道德与法治课间十分钟第二课时教案.pdf
Unity Tutorial _ Create your own Augmented Reality App in 10 Minutes
内容概要: 1. 这是一个使用Vue开发的生日计算器Web应用 2. 采用Element Plus UI框架开发页面 3. 采用date-fns这个npm包进行日期计算 ...具体使用可以参考我的博文《十分钟带你入门Vue.js开发(Vue 3)》
对于那些经常需要给朋友攒机或者重新安装操作系统的电脑高手来说,每次安装Windows系统所经历...只要将自动应答文件和Ghost有机结合起来,也可以打造出一个适用于所有计算机的Windows封装包,这样仅需十分钟即可完成。
精彩十分钟
"十分钟让你看懂Python"这个标题暗示着这本书旨在快速引导读者理解Python的基础概念,让初学者能在短时间内对Python有一个基本的认识。 在十分钟内,你可以了解Python的基本结构,包括如何打印输出(print语句)、...
十年建站老司机带你十分钟搭建网站分享.pdf
十分钟教会你cron表达式,介绍怎么写cron表达式的语法
- **良好的第一印象**:穿着得体,保持微笑,准时到达,展现出专业且自信的态度。 - **沟通技巧**:清晰、准确地表达自己的观点,避免使用含糊不清或过于复杂的语言。 - **积极互动**:适时提问,显示你对公司和...
这段代码会创建一个包含三行的窗口:第一行是欢迎文本,第二行是输入框,第三行有两个按钮 —— "OK" 和 "Cancel"。当用户在输入框中输入内容并点击 "OK" 或 "Cancel" 按钮时,程序会读取输入内容并打印出来,或者...
新人教统编版一年级上册道德与法治 第7课 课间十分钟 第1课时 教学课件.pptx
十分钟让你自学Lotus Notes 7英文名称Teach.Yourself.Lotus.Notes.7.in.10.Minutes
部编版道德与法治小学一年级《课间十分钟》第一课时教案.pdf
一年级上学期道德与法治教案 第二单元《课间十分钟》(第1课时)人教部编版.doc
Python十分钟入门指导、适合新手学习。
十分钟决定你的职业_职业性格测试题及答案.doc