unity3d FPS 枪的后座力

2023-11-14

实现枪开枪后, 向上偏移一段距离,再缓慢下移复位(模仿cs)

这里写图片描述

调小后座力

这里写图片描述

using UnityEngine;
using System.Collections;

public class Camera2Follower : MonoBehaviour {
    // 枪cd计时器
    float timer;

    // 后座力 之前枪摄像头的角度
    Vector3 s_pre_euler;
    public float gun_end_force = 0.53f; // 枪后座力大小 (可以先调大些方便调试)
    void Update ()
    {
         ....
         timer += Time.deltaTime;
          if (Input.GetButton("Fire1") && timer >= 0.15)
          {
              // 计时器清零
              timer = 0f;
              s_pre_euler = transform.eulerAngles;
              // 后座力
              rotationY += Input.GetAxis("Mouse Y") * sensitivityY + gun_end_force;
              Quaternion yQuaternion2 = Quaternion.AngleAxis(rotationY, Vector3.left);
              transform.localRotation = originalRotation * yQuaternion2;

          }

          // 检测鼠标有没有移动
          if (Input.GetAxis("Mouse Y") != 0)
          {
              //Debug.Log("X: " + transform.eulerAngles);
              s_pre_euler = transform.eulerAngles;
              rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
              rotationY = ClampAngle(rotationY, minimumY, maximumY);

              Quaternion yQuaternion = Quaternion.AngleAxis(rotationY, Vector3.left);
              transform.localRotation = originalRotation * yQuaternion;
          }
          else
          {
              recoverGun();
          }
    }

    // 恢复后座力以前的位置
    void recoverGun() {
        s_pre_euler.y = transform.eulerAngles.y;
        Quaternion current_cam = Quaternion.Euler(transform.eulerAngles);
        Quaternion target_cam = Quaternion.Euler(s_pre_euler);
        transform.eulerAngles = Quaternion.Slerp(current_cam, target_cam, 5 * Time.deltaTime).eulerAngles;
    }

    void Start ()
    {
        s_pre_euler = transform.eulerAngles;
    }

    // 限制角度
    public static float ClampAngle (float angle, float min, float max)
    {
        if (angle < -360F)
            angle += 360F;
        if (angle > 360F)
            angle -= 360F;
        return Mathf.Clamp (angle, min, max);
    }
}

看了一下cs的枪后座力 发现还有左右抖动,于是又加了点代码

y_angle_mat = xxxxxxxx;    // 上下方向
....
// 在枪开火的方法区加
float xAngle = Random.Range(0.0f,1.0f);
Quaternion x_angle_mat = Quaternion.AngleAxis(xAngle, Vector3.up);
transform.localRotation = originalRotation * y_angle_mat * x_angle_mat;                  // 相当于乘以一个矩阵
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

unity3d FPS 枪的后座力 的相关文章

  • Unity集成Leap Motion

    转载自 http www cocoachina com game 20150716 12625 html 演示视频文章最后 如果你已经熟悉编程的概念 理解并在C 语言方面有一定的经验 并且对面向对象编程思想和设计概念有所熟悉 如果你了解3D
  • Unity UGUI的RawImage(原始图片)组件的介绍及使用

    Unity UGUI的RawImage 原始图片 组件的介绍及使用 1 什么是RawImage组件 RawImage是Unity UGUI中的一个组件 用于显示原始图片 与Image组件不同 RawImage可以直接显示原始图片的像素数据
  • VS2017调试unity没有解决方案

    1 VS2017之前的版本调试unity 需要下载 Visual Studio Tools for Unity 2 VS2017内置了Visual Studio Tools for Unity 3 首先打开 帮助 gt 关于 已安装程序中查
  • Animator之RootMotion

    Unity3D 中 Generic 动画导入设置和 Root Motion 之间的关系 Unity3D 的 Mecanim 动画系统可以直接复用 3DS MAX 中制作的动画文件中的位移 这个就是通过 applyRootMotion 来达成
  • 《Unity Shader入门精要》彩图版免费分享~~~~~

    这书很多地方都要币或者要钱 这里就免费分享了 下面是网盘链接 顺手点个赞或者评论一波呗 下载链接 链接 https pan baidu com s 137Y1nkB6h8HIvKOfwFPnbQ 提取码 f8dw 顺手点个赞 蟹蟹蟹蟹
  • Unity笔记-打飞碟游戏

    目的 创建一个打飞碟游戏 简陋 游戏要求 游戏要分多个 round 飞碟数量每个 round 都是 n 个 但色彩 大小 发射位置 速度 角度 每次发射数量可以变化 游戏过程中 仅能创建 n 个飞碟 且不容许初始化阶段生成任何飞碟 飞碟线路
  • 离散仿真引擎基础作业与练习

    作业内容 一 简答题 1 解释 GameObjects 和 Assets 的区别与联系 2 下载几个游戏案例 分别总结资源 对象组织的结构 3 使用 debug 验证 MonoBehaviour 基本行为或事件触发条件 4 了解 GameO
  • 我的和unity3d的小故事1——恶魔射手之鼠标控制移动之input.getaxis("Horizontal")与input.getaxis("Vertical")

    跟着恶魔射手视频学习的过程中遇到的第一个问题是怎么也移动不了 那么问题来了 打印出来是获得的下面两个值都是0 怎么办呢 改edit下面的projectsetting里面的input属性下面两个值的type都改成mouse movement
  • untiy的纹理格式介绍

    Desktop RGB Compressed DXT1 压缩的RGB纹理 这是最常见的漫反射纹理格式 4位 像素 32 KB 256x256 RGBA Compressed DXT5 压缩的RGBA纹理 这是漫反射和高光控制纹理的主要格式
  • 【Unity3d】Animator和Animation组件使用注意事项

    一 Animator一般用于人物动画控制 特点是动画是持续的 可能有动作切换 Animation一般用于间断性的动画的控制 比如一个场景特效的播放 只播放一次就完了 二 实测Animation速度比Animator快10 左右 内存占用没测
  • Unity 导出XCode工程运行报错: ‘UnityFramework/UnityFramework.h‘ file not found

    简介 近期项目升级到2019 4 10f1版本 在用自动化打包的时候 遇到了一些问题 其中一个是 在导出XCode工程之后 运行工程的时候 编译报错 UnityFramework UnityFramework h file not foun
  • JPush极光推送Unity插件iOS设备无法获取DeviceToken

    前言 最近在使用JPush进行极光推送 Unity插件GitHub地址https github com jpush jpush unity3d plugin 问题描述 但是发现了一个问题 按照官方文档操作 最终仍然无法获取DeviceTok
  • unity 读取和写入Excel中文出现乱码解决方法

    在编辑器中读取和写入中文一切正常 发布出来只要是中文就会出现乱码 解决方法 将C Program Files Unity Editor Data Mono lib mono unity 目录下的I18N dll和I18N CJK dll复制
  • unity3d 输入法相关API

    Input inputString 获取输入的文字 正在打的中文是接受不到的 只有在文字写到文本框才能获取 Input imeCompositionMode 是否是激活输入框状态 on 是 Input compositionString 空
  • Unity动画系统详解5:BlendTree混合树是什么?

    摘要 Animator中有一个功能 用来解决多个动画之间的混合 经常用于移动动画之间的混合 这个功能叫做BlendTree 混合树 洪流学堂 让你快人几步 你好 我是跟着大智学Unity的萌新 我叫小新 这几周一起来复 yu 习 xi 动画
  • Unity里清除Console控制台Log的函数

    Log输出部分转发来自 http blog sina com cn s blog 13c4bf4b40102wz0r html 在控制台输出中 是开发者常用到的一种函数 通过Debug类来实现 打印字符串 Debug Log log 如果有
  • unity的LOD组件

    本文转载自http blog csdn net huutu article details 52106468 LOD是Level Of Detais 的简称 多细节层次 在游戏场景中 根据摄像机与模型的距离 来决定显示哪一个模型 一般距离近
  • Unity打包WebGL的优化常用操作?

    1 贴图部分优化 如果贴图格式时2048 在不影响画面效果的情况下 改成1024或者5 12 还可以缩小包体 2 压缩和解压缩问题 WebGL打包的时候分三种压缩情况 gzip 比Brotli文件打 但打包快 http和https都支持 B
  • Mecanim Any State

    Any State表示任意状态 任意状态是 一个一直存在的特殊状态 他的存在是为了保证你在无意转移至某个你当前正处于的特殊状态而准备的 为你的状态机中的每个状态设置相同的对外转移是一个快捷的方式 假如有Walk Run Fly Die这四个
  • Unity3d + NGUI 的多分辨率适配

    移动端的多机型适配 现在要介绍的是 锁链战记 这款游戏的适配方法 这种适配方法是UI是一个基础尺寸 背景是一个基础尺寸 背景比UI多出的部分是一些没有实际作用的部分 这样的适配方式避免了在iPhone5这样的小屏幕上镶边 首先设定UIRoo

随机推荐

  • 在CSDN学Golang云原生(git)

    一 git的工作流程 Golang的Git工作流程与其他语言的Git工作流程类似 通常包括以下步骤 创建分支 在本地代码库中创建一个新的分支 该分支用于开发新功能或修复错误 编写代码 在创建的分支上进行编码 并将更改提交到本地版本控制库中
  • 【Egg从基础到进阶】一:Egg项目初始化及基础入门

    目录 Egg js 为企业级框架和应用而生 我们希望由 Egg js 孕育出更多上层框架 帮助开发团队和开发人员降低开发和维护成本 使用Egg 脚手架创建一个Egg项目 node gt 14 20 0 app router app cont
  • Java架构师技术进阶路线图详解

    在企业里 一名架构师已经可以算是高端人物了 但架构师也是需要学习的 任何人与事物都需要学习 下面我们就来了解一下Java架构师到底该如何进阶 请看如下 一 阅读源码 深入的Java学习 经典源码阅读不可少 常见的设计模式 编码必备 Spri
  • 如何给elementui中表格的行设置样式

  • 【C++ 存储和读取二进制文件以及类的实例】

    很多时候程序运行时的数据都以类的对象的形式存储 那么如何将这些对象保存使得下一次运行程序的时候可以直接使用呢 Step 1 gt 首先我们需要知道如何读写二进制文件 inline size t readBinaryFile const ch
  • Elasticsearch基础1——搜索引擎发展史和工作流程、es/es-head/kibana的基础安装

    文章目录 一 搜索引擎 1 1 搜索引擎的发展背景 1 2 Lucene和Elasticsearch 1 3 Solr和Elasticsearch对比 1 4 数据搜索方式 1 5 搜索引擎 1 5 1 搜索引擎工作流程 1 5 2 网络爬
  • SVN:This client is too old to work with working copy…解决办法

    svn This client is too old to work with working copy 由于svn工作拷贝目录下都有个 svn目录 里面保存着svn需要的一些版本信息等 当客户端软件升级后 里面的信息也相应增加以支持更多的
  • 如何查看共享服务器文件夹权限设置,如何共享服务器文件夹权限设置

    如何共享服务器文件夹权限设置 内容精选 换一换 Linux操作系统的弹性云服务器默认只能通过root帐号使用mount命令进行挂载文件系统 但可通过赋予其他普通用户root权限 达到使非root的普通用户能够在弹性云服务器上使用mount命
  • 双线macd指标参数最佳设置_15分钟macd参数设置方法 15分钟k线macd指标如何判断买卖点...

    炒股投资过程中 我们通常会借助多种指标来判断股票买卖时机 今天为大家分享判断股票买卖点的组合是15分钟k线与macd指标 那么15分钟macd参数设置方法是什么 15分钟k线macd指标如何判断买卖点 下面小编为大家来详细介绍下15分钟线m
  • 网络穿透代理局域网

    网址 穿透网址 开启通道 开始代理
  • ARM中的---汇编指令

    一 带点的 一般都是ARM GNU伪汇编指令 1 text data bss 依次表示的是 以下是代码段 以下是初始化数据段 以下是未初始化数据段 2 global 定义一个全局符号 通常是为ld使用 比如经常看到的 global star
  • 利用树莓派搭建简易服务器

    读研以来笔者一直负责实验室的网络维护 可以说是实验室名副其实的首席大网管 整个实验室是从学校网络中心购买了一个教育网的公网IP地址和带宽 公网IP绑定了实验室的主路由器 而主路由器就在笔者卡位的旁边 有一天笔者突发奇想 拿了手头的树莓派3结
  • Micropython——报错解决:TypeError: object with buffer protocol required

    报错 检查报错处代码 仔细检查可以发现 是括号放错位置 导致函数无法正常执行 故报错 一般情况下 Micropython除硬件如定时器中断内存溢出等硬件本身报错外 其他均为语法错误
  • 统计学习方法学习笔记(一)————统计学习方法概论

    1 统计学习 1 统计学习概念 统计学习 statistical learning 是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科 统计学习也称为统计机器学习 statistical machine learn
  • MLIR入门系列系列学习笔记

    目录 1 名字解释 这一定义包含3个关键元素 2 代码演示 2 1 环境准备 2 2 编译llvm project 2 3 测试解析 2 3 1 源程序 2 3 2 将源程序生成抽象语法树 AST 3 MLIR三要素 3 1 MLIRGen
  • 为什么在组件内部data是一个函数而不是一个对象?

    为什么在组件内部data是一个函数而不是一个对象 因为在组件复用的时候会重新生成一个对象 而data是一个对象的话 因为对象是引用数据类型 data数据会被复用 而当data是一个函数的时候每次调用的时候就会返回一个新的data对象 vue
  • 安装--centos7上使用kubeadm安装三节点的k8s集群

    安装文档 https kubernetes io zh cn docs setup production environment tools kubeadm install kubeadm 参考 https blog csdn net qq
  • 瑞吉外卖业务开发

    一 软件开发整体介绍 软件开发流程 需求分析 产品原型 需求规格说明书 设计 产品文档 UI界面设计 概要设计 详细设计 数据库设计 编码 项目代码 单元测试 测试 测试用例 测试报告 上线运维 软件环境安装 配置 角色分工 项目经理 对整
  • 2023华为OD机试真题【垃圾短信识别】

    题目描述 大众对垃圾短信深恶痛绝 希望能对垃圾短信发送者进行识别 为此 很多软件增加了垃圾短信的识别机制 经分析 发现正常用户的短信通常具备交互性 而垃圾短信往往都是大量单向的短信 按照如下规则进行垃圾短信识别 本题中 发送者A符合以下条件
  • unity3d FPS 枪的后座力

    实现枪开枪后 向上偏移一段距离 再缓慢下移复位 模仿cs 调小后座力 using UnityEngine using System Collections public class Camera2Follower MonoBehaviour