枪械的瞄准——Unity随手记(2021.1.28)

今天实现的内容:

枪械的瞄准动画层

采用了和基本移动层类似的方法,射击动画由脚本直接播放。
在这里插入图片描述
瞄准状态的进入和退出由一个bool参数Aim来控制。
在这里插入图片描述
Idle和Reload层的Idle在形式上和功能上是一样的。形式上都是一个空节点,功能是为了在当前动画权重为1并且没有播放本层其他动画时依然能够播放其他层的动画。
在这里插入图片描述
权重记得设置为1。之前的Reload层也可以设置为1。
在这里插入图片描述

枪械瞄准的逻辑实现

由于每种枪都可能有不同的瞄准逻辑(比如不同的瞄具放大倍率啥的),我们在基类Firearms中设计了抽象方法Aim,让子类来具体实现瞄准逻辑。

  // 瞄准 每种枪的瞄准会有不同(也许吧) 放大会有不同(机瞄,二倍镜,三倍镜) 需要派生类来具体实现
  protected abstract void Aim();

通过修改摄像机的FOV来实现瞄准放大的效果。eyeCamera是摄像机的引用,originFOV用于存储摄像机原本的FOV值。

        // 摄像机 用于瞄准时修改FOV
        public Camera eyeCamera;
        // 摄像机FOV的原数值
        protected float originFOV;

Aim方法逻辑很简单,由于大头都被动画实现了,所以我们要做的就是修改动画参数。

        // 瞄准
        protected override void Aim()
        {
   
   
            gunAnimator.SetBool("Aim", m_isAiming);
        }

重点在这里,Update方法中的瞄准逻辑,我们专门做了一个bool值m_isAiming来判断当前是否处于瞄准状态。由于Aim只是修改动画参数,所以我们要实现的逻辑是 m_isAiming要能反映当前是否处于瞄准状态。按住瞄准键就能保持瞄准状态,松开瞄准键退出瞄准。

            // 瞄准 按住就会瞄准
            if (
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值