那抱歉,上次那个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. 课程目标: - 知识与技能...
在课程的第一个环节中,学生被鼓励分享自己在课间十分钟里喜欢的游戏。学生们可能会提到跳绳、跳格子、踢毽子等传统游戏,这些游戏不仅给他们带来快乐,而且也有益于身心发展。通过分享,学生们能够了解不同的游戏...
在第七课“课间十分钟”的第一课时中,教学内容主要聚焦于学生课间休息时间的利用,以及如何通过课间活动促进身心健康。 首先,我们需要让学生理解课间时间的重要性。十分钟后,他们将结束一节课的学习,迎来短暂的...
- 本课属于统编《道德与法治》教材的一部分,关注小学生健康、安全、快乐的生活。 - 针对初入小学的一年级学生,他们可能缺乏与人交往和群体游戏的经验,不熟悉如何安全游戏。 - 教学目标是引导学生学会遵守学校...