那抱歉,上次那个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!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 现在开火!!!!!!!!!
相关推荐
内容概要 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)》
1. 使用Error Boundary处理错误组件 之前,一旦某个组件发生错误,整个组件树将会从根节点被unmount下来。React 16修复了这一点,引入了Error Boundary的概念,中文译为“错误边界”,当某个组件发生错误时,我们...
### 干货:十分钟带你从入门到进阶Python爬虫 #### 一、引言 在数字时代,网络数据成为了宝贵的资源。对于开发者而言,掌握高效的数据抓取技术至关重要。Python作为一种灵活强大的编程语言,拥有丰富的库支持,是...
"十分钟让你看懂Python"这个标题暗示着这本书旨在快速引导读者理解Python的基础概念,让初学者能在短时间内对Python有一个基本的认识。 在十分钟内,你可以了解Python的基本结构,包括如何打印输出(print语句)、...
十年建站老司机带你十分钟搭建网站分享.pdf
十分钟教会你cron表达式,介绍怎么写cron表达式的语法
- **良好的第一印象**:穿着得体,保持微笑,准时到达,展现出专业且自信的态度。 - **沟通技巧**:清晰、准确地表达自己的观点,避免使用含糊不清或过于复杂的语言。 - **积极互动**:适时提问,显示你对公司和...
这段代码会创建一个包含三行的窗口:第一行是欢迎文本,第二行是输入框,第三行有两个按钮 —— "OK" 和 "Cancel"。当用户在输入框中输入内容并点击 "OK" 或 "Cancel" 按钮时,程序会读取输入内容并打印出来,或者...
【精彩十分钟】是一种创新的教育理念,旨在充分利用中小学课间的十分钟时间,发挥学生的主体作用,增强他们的动手能力,提升身体健康素质,并通过丰富的课间活动来促进学生的全面发展。这一理念指出,教师不仅要关注...
【十分钟打造适用所有电脑的Windows封装包】 在IT领域,为了解决频繁的Windows系统安装问题,特别是针对电脑爱好者和IT专业人士,制作一个通用的Windows封装包是非常实用的技巧。这个封装包能适应不同的计算机配置...
开发你的第一个Spring Boot应用** - **11.1. 创建POM** - 使用Maven创建一个新的项目,并在pom.xml文件中添加Spring Boot Starter Web依赖。 - **11.2. 添加classpath依赖** - 在项目的classpath中添加所需的...
十分钟让你自学Lotus Notes 7英文名称Teach.Yourself.Lotus.Notes.7.in.10.Minutes
1. 教材内容:《课间十分钟》是部编版道德与法治一年级上册第二单元《校园生活真快乐》的一部分,旨在引导学生理解并掌握课间活动的重要性和规则,培养他们的安全意识和文明行为习惯。 2. 课程目标: - 知识与技能...
- 本课属于统编《道德与法治》教材的一部分,关注小学生健康、安全、快乐的生活。 - 针对初入小学的一年级学生,他们可能缺乏与人交往和群体游戏的经验,不熟悉如何安全游戏。 - 教学目标是引导学生学会遵守学校...
在这篇“下课十分钟”的作文中,作者以第一人称的角度讲述了自己在课间休息时与朋友郭新民进行掰手腕比赛的故事。这个场景是校园生活中常见的,充满了趣味性和戏剧性。首先,故事发生在星期一下午的第二节课后,这是...
【人教部编版小学道德与法治 课间十分钟 第一课时 教案 教学设计】 本教案主要围绕“课间十分钟”的主题展开,旨在教育小学生如何合理利用课间休息时间,享受校园生活的同时,培养他们的社交能力、安全意识和规则...