Unity官方案例学习|SpaceShooter

游戏的资源可以去asset store上下载,直接搜space shooter就好,下载好后导入到项目中。由于是一款3D工程中的2D游戏,所以摄像机要调成正交(Orthographic)。刚开始的时候发现陨石的上方总是有一块是黑色的,而且飞机在旋转之后也会有一部分是黑的,想了半天没想明白是什么问题。后来调到另一个视角就明白了:摄像机的Y值过小导致拍不到陨石的上方及其他超出摄像机范围的部分。一个很值得注意的问题是unity中的坐标系不同于们熟悉的坐标系。比方说这个项目中战机陨石等处于同一高度平面上,习惯性思维应该是z轴固定,但在unity中是y轴固定。游戏的背景就是一个empty object附上了texture,这里的shader要调成Unlit/Texture,作用是不受光照影响。另外要调整好比例不要让图片压缩失真。

我们把战机的model拖入到Hierarchy中,命名为Player,放在(0,0,0)位置,方便我们之后的计算。战机机身后喷的火焰是项目自带的动画,放到Player下。ShotSpawn是一个empty object,可以想象成战机的弹药发射器,也就是说我们的子弹是从这里发射出去的。为战机设置刚体、Collider这些就不说了,需要注意的就是要把Collider中的IsTrigger选中,以及本项目中所有刚体的重力选项取消。接下来我们用脚本来实现战机的移动及射击。

移动的代码都放在FixedUpdate函数中,首先我们要知道FixedUpdate和Update的区别。从字面上理解,它们都是在更新时会被调用,并且会循环的调用。但是Update会在每次渲染新的一帧时被调用。而FixedUpdate会在每个固定的时间间隔被调用。因此物理层的东西我们一般都会放在FixedUpdate中。首先我们定义了公共的变量speed,然后我们用两个变量moveHorizontal和moveVertical记录玩家输入的方向数据。接着我们新建一个Vector3类型的变量movement,并且将moveHorizontal和moveVertical分别赋值给movement的X和Z。最后我们获取Player的刚体的velocity属性,将movement乘上speed的值赋给它。在编辑器中赋予speed值,运行游戏后我们就会看到战机能够移动了。接着我们定义变量tilt,获取Player的刚体rotation属性,将velocity*-tilt的值赋给它,这样我们的战机在水平方向运动时可以有一定角度的旋转,看起来更真实。最后我们要限定下飞船的运动范围,这个需要自己调Player的位置找临界值。这里我们用Mathf.Clamp方法来限制值的范围。

更多unity2018的功能介绍请到paws3d学习中心查找。链接https://www.paws3d.com/learn/,也可以加入unity学习讨论群935714213

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值