1.发射子弹
①效果要求:
1)按下键盘某个键位,发射子弹,播放发射子弹的动画
2)子弹撞到其他物体会消失,或者经过一段时间自动消失
3)子弹打中敌人,敌人停下,并播放被击中动画
②分析:
1)键盘输入获取,创建子弹,并具有初速度;子弹方向与角色当时朝向相同
2)子弹有碰撞时间,需要rigidbody;经历时间自动消失,需要计时器
3)敌人中弹有状态切换,需要添加开关和动画树的parameter
③知识点:
1)
使用Input.GetKey获取特殊的案件输入,作为判断条件,创建子弹
通过Instantiate()创建子弹。注意,这里的子弹出生点是和主角的位置一样的,这样肯定会发生碰撞,导致子弹还没发射出来就因碰撞事件销毁。这里解决的方法是,通过角色和子弹的Layer属性 区别开,并在project settings->physic 2D中取消掉两个Layer之间的碰撞检测。
子弹创建之初,就应该有一个初速度,这里用了addForce()函数,给子弹的gameobject施加一个Vector2 类型的力。可以看到,这个函数是写在子弹脚本下的,这里进行了跨脚本调用。因为子弹的发射方向应与角色的面朝方向相同,所以这里直接用了之前控制静态动画切换的Vector2 类型变量LookDirection,300是速度大小。
2)子弹碰撞消失,所以有自己的碰撞事件,需要挂个脚本,用onCollitionEnter2D()函数来实现。同时脚本上也可以写一些修改子弹自身属性的函数方法
3)敌人中弹和敌人碰撞角色都是触发事件,可以用collision.tag进行区分
敌人的动画播放和主角发射子弹的动画播放,都只需要在对应事件发生后修改动画书的parameter即可(注意,如果transition不写条件,则会在播放结束后自动跳转)
2.CineMachine
CineMachine是一个Unity给的有多种功能的摄像机,是个插件,Window->Package Manager搜索下载。
下载之后,会出现工具选项,下拉创建一个新的2D相机
这里用到两个功能,Follow拖拽角色对象上去实现镜头跟踪。
Add Extension中可以创建其他组件对相机进行设定。这里加了一个限定摄像机移动范围的Confiner ,Bounding Shap 2D就是限定的范围,要填一个gameobject,可以新建一个空的对象,添加collider,调整collider大小,再拖进去
3.粒子特效
->右键->Effect->Particle System创建新的空粒子特效
有很多参数可以调,感觉有点偏美术的工作,调完保存为prefab,拖拽到对象上实现添加
粒子特效的访问和动画类似,也是定义个对象