Unity官⽅实例教程SpaceShooter
前⾔
如何下载和导⼊资源
如何设置游戏视窗⼤⼩
添加了飞船和飞船喷射效果
Capsule Collider和Mesh Collider的⽤法
但是我们还没有为游戏添加任何的操作,现在还只是⼀个可以看,但不能玩的版本,所以今天我就让游戏可以玩起来!
你将学到什么?
如何控制飞船移动
如何限制飞船的移动范围
如何整理公共变量
添加游戏背景
如何创建⼀个新材质
如何让飞机发射⼦弹
⼀、调整摄像机的位置
我们进⼊Game窗⼝,可以看到现在飞船是出于屏幕的正中间的,对于我们最终的游戏来说,这不是⼀个合适的位置,所以我们⾸先调整⼀下摄像机的位置,来改变飞船在屏幕中的位置。
这边其实也可以调整飞船的位置,来达到同样的⽬的,但是让飞船处于(0,0,0)的位置,会利于我们之后的制作,所以本例中我们采⽤调整摄像机的位置的⽅法来实现
我们选中Main Camera,然后将其的Position的Z值调整为5,然后我们看⼀下飞船的位置,如下:
这是⼀个不错的位置,接下来我们便可以来实现飞船的移动功能了
⼆、控制飞船移动
为了实现飞船的移动,⾸先我们给飞船也就是我们的Player添加⼀个脚本(Script),关于如何添加脚本请参见《》,在这⾥我们将脚本的名字命名为PlayerController,然后我打开脚本,添加以下代码:
⾸先我们定义了公共的变量speed
然后我们⽤两个变量moveHorizontal和moveVertical记录玩家输⼊的⽅向数据
然后我们新建⼀个Vector3类型的变量movement,并且将moveHorizontal和moveVertical分别赋值给movement的X和Z
最后我们获取Player的刚体的速度属性,将movement乘上speed的值赋给它
代码写完之后,我们保存⼀下代码,然后回到Unity编辑器,将speed设置为10,接着运⾏游戏来检测
我们刚刚的代码是否起到作⽤了。如⽆意外,现在我们可以控制飞船上下左右移动了!
不过现在飞船移动好像不是那么的⽣动,我们在给飞船左右移动的时候,让飞船整个⾝体倾斜⼀点,这样更加性感,我们再次打开脚本,增加以下代码:
⾸先我们添加⼀个公共变量tilt,来设置飞船倾斜的幅度
然后我们获取Player刚体属性的rotation,将我们移动的速度x值乘上-tilt赋值给rotation属性
关于Quaternion的详细信息有兴趣的朋友可以去查阅官⽅⽂档,后⾯会出专门的⽂章来详细讲解,这边就不做详细介绍了,⼤家只需要知道这句话的作⽤就是实现飞船左右移动时的倾斜功能
代码写完之后,我们保存⼀下,然后回到Unity编辑器,将tilt设置为5,接着运⾏游戏,我们就可以检查刚刚的代码是否起到作⽤,如⽆意外,飞船左右移动的时候就会有倾斜效果了
三、限制飞船的移动范围
我们实现了飞船移动功能后,会发现⼀个问题,就是飞船可以移动到屏幕外⾯去,这样玩家就看不到飞船了,这不是好的体验,就像马航失联⼀样,所以我们需要限制⼀下飞船的移动范围,让它⽆法飞出我们的屏幕外
让我们来思考⼀下,如何来限制飞船的移动范围呢?⾸先我们飞船的移动范围,换句话说就是飞船的Position属性,⽽它的范围呢,就是我们的屏幕边界,由于我们游戏视⾓是俯视⾓,飞船的Y轴位置不会变,所以我们只需限制飞船在X和Z轴上的位置即可,我们在编辑器拖动飞船到屏幕的最左边,可以看到飞船的X⼤约在-6左右,我们使⽤同样的⽅法,可以测试飞船在X和Z轴上的范围分别是(-6,6)和(-
3,8)。
接下来我们看看如何在代码中来限制飞船的位置:
⾸先序列化了⼀个Boundary类,⽤来保存飞船在X和Z轴上的范围,也就是xMin、xMax、zMin、zMax
然后我们定义了⼀个变量boundary
最后我们获取飞船的位置属性,然后通过Mathf.Clamp来确保飞船在X和Z轴上的范围处于我们设定的值内
将xMin、xMax、zMin、zMax整合到Boundary类⾥⾯,是⽅便分类管理公共变量,如下图:可以通过⼩三⾓来收起/展开,这样让公共变量更加整洁
写完代码后,我们保存⼀下,然后回到Unity编辑器,将xMin、xMax、zMin、zMax的值分别设置为(-6,6,-3,8),然后运⾏游戏测试⼀下,就可以发现,现在飞船⽆法跑出屏幕外了,Nice!
四、添加游戏背景
和官⽅视频不同,我们这边到这⼀步才添加游戏背景,原因是游戏背景和后⾯马上要讲到的⼦弹,都⽤到了同⼀个GameObject——Quad,所以两个东西放到⼀起来讲。
unity 教程⾸先我们新建⼀个Quad对象,然后进⾏两个标准动作,将名称命名为BackGround,新建成功后,我们在Game视窗中可以看到,没有任何变化,为什么呢?我们回到Scene视图来看⼀下,Quad到底是个什么东西
我们可以看到,Quad就是⼀个类似平⾯(Plane)的对象,它使垂直与摄像机的,所以我们看不到他,所以我们需要将它在X轴上旋转90°,然后我们就可以在Game视窗中看到了。
我们观察⼀下BackGround的Inspector属性,由于我只是做背景⽤,所以Mesh Collider我们根本不需要,这⾥我们就将该组件给移除掉
接下来我们将背景图⽚资源,直接拖⼊BackGround⾥⾯,Unity⾃动为我们⽣成了⼀个材质,此时我们可以看到BackGround变成了如下的样⼦
这就是我们的背景,额,作为⼀个背景,它好像还是有很多问题,太⼩、太暗,⽐例失调,所以⾸先第⼀步,我们就是将它的⼤⼩调整到合适的尺⼨,我们选中背景图⽚资源,观察⼀下他的信息。
我们可以看到,背景图⽚的尺⼨为10242048,为了让图⽚⽐例不会失调,我们需要将*BackGround**的X设置为Y⼀半,我们将XY分别设置为(15,30)
我们可以看到,现在BackGround的⽐例已经正常了,⼤⼩也合适,但是图⽚还是太暗了,这是由于我们选中的材质渲染模式有关系,
我们将Shader修改为Unlit/Texture后,图⽚颜⾊就会变得正常了
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论