上一期,我们为角色添加了一把狙击枪,而大多数fps游戏的狙击枪都是可以开镜的,所以这一期也要对角色的狙击枪添加开镜功能。
在之前,我们对枪械武器添加了Gun脚本,这里将Gun脚本作为父类,派生出SniperRifle子类,作为我们将要为狙击步枪添加的脚本。
记得在派生类的Start()和Update()中为父类中的同名函数添加base.+函数名,防止其被子类函数中的同名函数覆盖。
在inputSystem中绑定开镜的inputAction,绑定为r键。
我们想要的效果是按一下开镜,再按一下关闭,所以新建一个布尔值,当inputAction触发之后,检查布尔值是否为true,若为false,执行开镜操作并将布尔值设为true,否则执行闭镜操作。
创建一段开镜动画,在动画末尾添加动画事件
开镜操作
添加一张瞄准镜内部的图片,命名为scope
在开镜时将图片的Active设置为True,并在摄像机的剔除遮罩中剔除weapon所在的层(我把狙击枪的layer设为了Weapon),并将视场角缩小以达到放大效果。
关镜动作时,触发动画的布尔值设为false,并关闭镜内贴图,还原摄像机的剔除遮罩以及视角