一、前言

本篇博客记录的内容为上篇的延续,将介绍完成的射击反馈震屏及UI子弹数量等工作内容。这里实现的是开枪以后抖动屏幕的效果以及子弹数在游戏界面的UI显示。
至此,FPS游戏的单机开发部分就已经大致完成,接下来我们将基于PUN2继续进行游戏的多人化。

二、射击反馈震屏

首先创建了一个CameraSpringUtility脚本。Values是spring施加的一个力度。
UpdateSpring实现的是弹簧弹出去然后把镜头逐渐拉回来的效果。
target一般定为圆心。没有继承MonoBehaviour的话是没有办法直接赋值到组件当中去的。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class CameraSpringUtility
{public Vector3 Values;private float frequence;//过渡的效果private float damp;private Vector3 dampVaules;public CameraSpringUtility(float _frequence,float _damp){frequence = _frequence;damp = _damp;}public void UpdateSpring(float _deltaTime, Vector3 _target){Values -= _deltaTime * frequence * dampVaules;//从外面施加过来一个向上抬的力dampVaules = Vector3.Lerp(dampVaules, Values - _target, damp * _deltaTime);//衰减到target数值}
}

然后创建一个CameraSpring脚本,它继承了MonoBehaviour,它才能挂载到我们的物体上。

using System;
using System.Collections;
using System.Collections.Generic;
using Unity.Mathematics;
using UnityEngine;public class CameraSpring : MonoBehaviour
{public float Frequence = 25;public float Damp = 15;public Vector2 MinRecoilRange;//输入的力的最小范围public Vector2 MaxRecoilRange;private CameraSpringUtility cameraSpringUtility;private Transform cameraSpringTransform;private void Start(){cameraSpringUtility = new CameraSpringUtility(Frequence, Damp);//新建一个对象cameraSpringTransform = transform;}private void Update(){cameraSpringUtility.UpdateSpring(Time.deltaTime, Vector3.zero);cameraSpringTransform.localRotation = Quaternion.Slerp(cameraSpringTransform.localRotation,Quaternion.Euler(cameraSpringUtility.Values), Time.deltaTime * 10);//}//施加力的一个方法public void StartCameraSpring(){cameraSpringUtility.Values = new Vector3(0,UnityEngine.Random.Range(MinRecoilRange.x, MaxRecoilRange.x),UnityEngine.Random.Range(MinRecoilRange.y, MaxRecoilRange.y));}
}

然后到FPMouseLook脚本中去,在start函数中声明cameraSpring,找到FiringForTest,在其中引用StartCameraSpring。

cameraSpring = GetComponentInChildren<CameraSpring>();
    public void FiringForTest(){currentRecoil += RecoilRange;cameraSpring.StartCameraSpring();currentRecoilTime = 0;}

随后到unity界面中


然后开始游戏,进行射击,就会发现实现了一定的屏幕晃动效果。frequence频率越大,抖动就越快,damp数值越大,回到中心的速度就越快。

三、UI子弹数量

对代码修改完成以及在unity中修改添加了UI后,游戏界面的右下角就会显示子弹数量。前面的数字是弹夹中剩余的子弹数,后面的数字是弹夹容纳的最大子弹数量。

项目实训(十三)——FPS游戏射击反馈震屏及UI子弹数量相关推荐

  1. 山东大学项目实训十三——FFmpeg

    笔记来源 https://www.bilibili.com/video/av40146374 01.下载,配置 ffmpeg下载 首先打开 ffmpeg官网下载 或者用 百度云 下载(https:// ...

  2. 项目实训(十一)——FPS游戏(第一人称射击游戏)初步开发

    一.前言 我与另外两个组员合作进行了FPS游戏(第一人称射击游戏)的开发,这个游戏对应于我们在项目开始设想的PVP玩家对战游戏.玩家之间的之间对战会让游戏变得更加紧张刺激,还能够增强玩家之间的感情. ...

  3. 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第二十四节:小项目实训《绝命沙滩》

    <使用Cocos2d-x 开发3D游戏>系列在线课程 第二十四节:小项目实训<绝命沙滩> 视频地址:http://edu.csdn.net/course/detail/1330 ...

  4. C语言编程实训企业计算,C语言编程项目实训

    24.C语言编程项目实训(高级)(全日制一个半月,夜班三个月,学费1390元) 理论与实操一体化课程: 一.C语言基础:1.应用C语言的各种特点:2.应用算法的含义.特点.表示方法 二.C的基本数据类 ...

  5. c4d完全学习手册_动态视觉设计就业班,全商业项目实训,一线制作团队10人小班授课,持续提升学习...

    CUBE专注动态视觉设计培训.CUBE依托本身设计公司制作资源优势,将培训制作完美结合,开设有北京实体培训课程以及网络案例实战课程. CUBE课程与工作要求完美对接,16周高强度集训,零基础学员毕业后 ...

  6. web前端小项目个人实例_Web前端:小程序界面与逻辑项目实训

    大家好,我来了!本期为大家带来的Web前端学习知识是"Web前端:小程序界面与逻辑项目实训",喜欢Web前端的小伙伴,一起看看吧! 主要内容 数据绑定 渲染 界面层数据渲染 事件处 ...

  7. 计算机毕业设计JAVA项目实训管理系统设计与实现mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA项目实训管理系统设计与实现mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA项目实训管理系统设计与实现mybatis+源码+调试部署+系统+数据库+lw ...

  8. 项目实训(十六)——总结

    通过这次项目实训学到了很多自己之前没有接触过的知识,对unity游戏开发和C#语言有了更深入的了解.开发的过程非常艰难,但最终还是解决了不少问题,完成了许多功能.在这里我要感谢一下我的队友们和指导老师 ...

  9. 2021-07-24项目实训后端第四周(3)

    项目实训第四周总结 这周的工作内容:基本完成了我负责的关于教室管理,用户管理,黑名单管理这几部分和前端的基本对接,能够实现前后交互.同时新添了管理员登陆部分. 同时整理自己写的代码,形成相对完整详细的 ...

最新文章

  1. Paddle 网络中的Tensor 数据结构
  2. (写给像我一样刚离开校园进入公司的小菜鸟)在领域架构下,如何实现简单的展示页面以及增删改查(第二步)...
  3. java磁盘读写b 树_原来你是这样的B+树
  4. maven package自己主动部署包
  5. win docker运行MySQL
  6. 二叉树的遍历(算法导论第三版12.1-4)(包含先序遍历,后序遍历和中序遍历)
  7. LIDAR in Google Earth
  8. matlab中运用demod解调程序,matlab调制解调源码有代码解释原理分析
  9. ajax 弹框 示例,AJAX实现鼠标经过弹出详细介绍示例
  10. 3D打印革命性升级!只要光照几十秒,完美雕像浮出水面丨Science
  11. ajax返回值demo
  12. 网络通信知识点,程序员必备知识
  13. IDEA运行java文件环境配置
  14. C语言/C++基础之大炮打飞机
  15. Drupal独到的编程思想
  16. Java —— 日期时间 API
  17. 7-2 计算正五边形的面积和周长 (25分)
  18. 关于GDPR,你需要了解的的5件事
  19. linux用户管理(2)----修改用户模式(usermod,sudo权限等)
  20. 使用Typora添加 行内、行间 数学公式

热门文章

  1. 1.几种简单矩阵计算的Fortran实现
  2. TED1984-2019全部中英对照演讲稿集 学习英文演讲写作的好帮手
  3. 2023年最新前端面试题
  4. SpringCloud(5)— 微服务部署(Docker)
  5. PMP培训机构选择五大关键点!看完就会!
  6. 升级电信500M光纤须知
  7. 阿里矢量图刷新显示异常
  8. Mac 下终端命令无法使用的问题
  9. 最新最全的手机号正则表达式及其他常用正则校验
  10. 记录基础学习第二_小项目_飞行棋小游戏