Unity插件:UFPS使用教程(一)

  • Unity插件:UFPS使用教程(一)

Unity插件:UFPS使用教程(一)

先挂上UFPS官方文档:https://docs.google.com/document/d/17Ns3PwlSWg4kqWwnBZ4DRa9n_LMSOe7m3KzMfsPUGBI/pub?embedded=true#h.6j3sw4swd9o8
由于本人要用到这个插件,而关于这个插件国内的资料奇少,但同时它涵盖的内容很多,所以我决定一遍看官方文档一遍做笔记,就等于把它的内容大概了解一遍。但这是本人第一次翻译,所以翻译的奇烂无比。请各位看官见谅。另外因为我的技术非常菜,所以以下内容肯定有错误的地方,请各位海量,可以在评论区里留言,欢迎讨论。

一. 关于ufps动画机的几个基本概念
Ufps动画机一个好处就是它充分利用了程序化动作模拟(procedural motion,后面用pm指代)来制作有关武器和摄像头的动作。它不依赖于传统的“有规律可循“的unity动画机制,而是通过玩家输入,和各种游戏内物理效果的实时演算。这使得游戏内所有事物都更加组织分明,所有行动都更加自然。
Pm另一个好处就是你不需要分别模拟出每个武器的运动。牵一发而动全身,你可能只是动过手枪,但ufps会实时计算出这一动作对其它物体的影响并显示出来。
综合运用好pm和传统unity动画机制,会使得你的游戏动作更加鲜活和富有张力,让你的游戏更加真实。

  1. 阻尼振动(Springs)中学物理学过
    UFPS的核心支撑就是阻尼振动系统。
    它一般有一个中停地(Rest State, Static Equilibrium),是它最终要停下的地方。强度(Stiffness)决定了弹簧的松弛程度,会影响到弹簧能弹多高。阻尼(Damping)会削减弹簧速度。
    击在墙上的箭,镜片上的水珠都符合这种运动方式。


2. 正弦运动(Bob)

第一人称射击中人物行走相机上下会采取BOB移动(虽然现代射击游戏里Bob的影响很少但还是存在)。如果在x轴和y轴都使用Bob移动,你会感觉你像一个恐龙或者一个身材庞大的巨兽。
3. 噪声(Noise)

这个看图就明白了,就是柏林噪声产生的随机骚动。烟雾,镜头晃动都会用到。
4. 动画机
UFPS只能在模型的节点和transform上移动,他们不能处理更加复杂的动画机,比如手指板动扳机。这些需要你做出这类动画,同时UFPS会提供调度程序来播放这些动画。
5. 计时器(Timers)
Vp_timer
二. vp_FpController

  1. Motor
    A. acceleration
    移动时controller每帧的世界坐标系下的速度量
    B. Damping
    移动停下时速度降低的加速度。过低的damping会让玩家感觉在冰面上。
    注:要是不想可以让你的游戏里操作飘,就把acceleration和damping都设为1,让后减小damping直到你对这个行走满意为止,这样能得到一个能及时停下的controller。
    注:想知道玩家的最大速度,就输入Debug.Log(Controller.Velocity.magnitude)
    C. Air Speed
    Controller不和地面接触时的速度。0代表着玩家在天上时不能向四边移动。1代表着玩家可以在天上和地上移动的一样快。这会影响玩家对游戏操作的感觉,尤其在平台跳跃为主的游戏场景中。
    D. Slope Speed Up
    决定了上坡时增加/减少controller速度大小。1代表了上坡时的速度和在平地上基本一样。小于或大于1使得上坡速度放慢或增加。
    E. Slope Speed Down
    和上面一样
    F. Free Fly
    启用后在天上时可以自由的移动,适用于零重力,水下游泳,或者超人的飞翔。Physics的Gravity Modifier为0或者非常低时这个效果会更好。
    跳起来后镜头会向上升,蹲下时镜头下降。如果controller 有地面接触碰撞体只会收缩。
  2. Jump
    A. Force
    在一个单独帧里跳起来时,上升的力的大小。挑起的高度也会被重力所影响。
    B. Force Damping
    决定了jump force多久会减小至0
    C. Force(Hold)
    如果跳跃键一直按下每帧的对跳跃的力的大小。如果不需要这个功能,把它设为0.
    D. Force Damping(Hold)
    决定了hold jump force多久减小至0
  3. Physics
    A. Force Damping
    决定了controller对外界力的作用的接受程度,比如爆炸的后作用力。1代表着根本不受影响,就像个很重的物体。0代表着受影响特别大,就像很轻的物体。
    B. Push Force
    决定了推动一个实体时力的大小。非常大mass的实体会很难被推动。
    C. Gravity Modifier
    决定了controller受重力影响有多大。更高的数值会有更重的感觉。Unity的Physics.Gravity也会影响物体。
    D. Slope Slide Limit
    当倾斜程度到这个临界角度时,controller会开始滑落。
    E. Slope Slidiness
    地面的光滑程度。如果比CharacterController的slopelimit更陡峭,会有叠加光滑程度。
    F. Wall Bounce
    会使得character controller受到外力时被弹飞(平时它不起作用)
    G. Wall Friction
    决定了受到外力比如爆炸时character controller应该滑多少(平时不起作用)
    H. Has Collision Trigger
    启用后会在开始时产生一个子游戏物体,带着一个capsule collider trigger。能和接触到的实体互动。

    注:这个collision trigger有时会影响raycast或者trigger的效果。如果raycast没击中玩家,要确保raycast打在charactercontroller上,或者从trigger上用sendmessageupwards向controller发送条消息。可以参照vp_hitscanbullet
    三. Vp_FPCamera
    1. Rendering
    A.Field of view
    摄像机视野大小
    B.Zoom Damping
    当FOV在代码里改变时,摄像头变到目标状态时有多快。更高的值变动越慢。
    C.disable VR mode on startup
    顾名思义
  4. Poisition Spring
    Camera position需要2个springs,一个是“常规”Springs,用来对玩家的行动做出反映,是一个较为松动的springs;另一个是更硬一些的Springs,用来对外力作出反应,如摄像机晃动。
    A. Offset
    相对于玩家的camera position差值。比如蹲下,只需要降低camera offset的y轴大小。窥视四周可以让摄像机沿着x轴移动。
    B. Ground Limit
    一个垂直的极限,防止摄像机插入地面。决定了当跪下或者受到外力或者bob时它能到头下方多远。
    C. Spring Stiffness/Damping
    Spring1的强度/阻尼
    D. Spring2 Stiffness/Damping
    这个Spring不会自启,只有调用vp_Fpcamera的AddForce2方法才能用到Spring2。
    E. Kneeling
    当玩家掉到地表上摄像机掉下多远。
    F. Kneeling Softness
    决定了玩家掉落时摄像机运动的帧数。数值越大,kneeling的过程越长。
    G. Earthquake Factor
    加剧或降低振动施加给摄像机的下作用力
    2.Rotation
    摄像机方向主要被鼠标输入和摄像机晃动影响。它还有一个rotation spring,主要被用来通过外力绕z轴旋转。
    A. pitch limit
    限制了摄像机竖直方向的旋转。
    B. Yaw Limit
    限制摄像机水平的旋转。主要用于炮台,也用于车上的玩家。
    C. Kneeling
    当玩家落在地表上,摄像机旋转多少。有50%概率摄像机在作用力下会从左向右旋转。
    D. Kneeling Softness
    数值越大,kneeling过程越慢
    E. Strafe Roll
    移动和蹲下时用到。摄像头相比于charactercontroller转动路径的rotation。
    F. Earthquake Factor
    加剧或降低振动施加给摄像机的下作用力
  5. Shake
    使用柏林噪声使得武器和镜头振动。比如瞄准时的轻微震动,手里拿着机关枪闲置时的轻微晃动,还有喝醉酒和下毒后的摄像机的晃动。
    A. Speed
    决定摄像机晃动速度
    B. Amplitude
    摄像机围绕x,y,z轴的角度上的晃动强度。X和y轴晃动作用域角色上的具体操作,z轴上晃动只会作用于相机。如果增加这个强度,会得到一个类似于喝醉了之后的体验。这也会用于狙击枪的晃动上因为它会影响瞄准。
  6. Bob
    相机的正弦运动。如果x轴和y轴同时应用bob,会有种体型庞大的大怪物的感觉。
    A. Rate
    摄像机bob运动的速度。X,y,z是位置上的运动。W是绕向前方向的旋转(将头部从左向右倾斜),y的典型值为0.9.
    B. Amplitude
    Camera bob的强度。决定了摄像机在每个方向上晃动多远。
    C. step threshold
    。。。后面的那几个没太看懂,大家有明白的在评论区里留言。后续搞明白了我会再更新,也可能永远不更新。就这样把反正。。
    四. Weapons:vp_fpweapons(撬棍什么的也算在武器里)

    把枪支rotation这种方式摆放(注意x,y,z轴在枪上的方向)

    2.防止武器穿模
    A.武器摄像头
    武器用另一个摄像头渲染,但也有缺点:
    1) 武器不能接受到来自外物的阴影
    2) 武器摄像头可能会干预到其他的渲染多一些的物体
    B.Retraction
    每帧都会有raycast从武器射到环境中。每当raycast击中一些东西,武器就会相应的伸出。通过这种方式可以感觉到武器一直能和环境融合的很好。
    缺点:
    1) 主摄像机的fov不适合于武器,游戏就像90年代初的一样,让人感觉武器在环境中很突兀。这时需要调整武器组件rendering>z scale微调一下武器使得它不是那么突兀
    2) 需要调一些设置,工作量多
    以上两种方式可以互相结合
    3.rendering
    A.weapon prefab
    武器的prefab,需要包含一个mesh filter,mesh renderer和材质。
    B.fov
    设置weapon camera的fov。和武器的position,rotation offset一起微调能得到一个合适的摆放效果和视野布局。
    C.Zoom Damping
    当fov从代码里修改时,fov插值的快慢。值越高,缩放越慢
    D.Clipping Planes
    决定了weapon camera最近和最远的clipping planes。推荐运行游戏时按住alt键,拖拽clipping plane:X来找到一个合适的值
    E.Z Scale
    微调武器位置,属于retraction方法
    4.position springs
    应用比如枪的后坐力
    A. offset
    武器的rest place位置
    B. Exit offset
    换武器时武器放下的位置
    C. Pivot
    决定了武器的中心点坐标
    注:pivot和武器模型position的关系受rotations影响。所以在编辑pivot之前要关掉武器摇晃,并设置武器rotation offset为(0,0,0)
    D. Pivot Stiffness
    武器的中心点spring强度。
    E. Pivot Damping
    武器spring的阻尼
    F. Show Pivot
    是否展示pivot(一个蓝色透明球)
    Tip:把pivot z设为-0.5让pivot回归视野
    G. Spring Stiffness/Damping
    武器spring强度/阻尼
    H. Spring2 Stiffness/Damping
    用来做像后座力这样的其他力的放映。它不会被vp_fpweapon自动使用,但vp_fpweaponshooter会调用它作为后座力。同时可以通过调用vp_fpweapon的“AddForce2”方式来使用它。
    I. Kneeling
    当玩家掉到地表上武器被推开多少
    J. Kneeling Softness
    参考摄像头的这个设置
    K. Fall Retract?
    当掉落时武器往后伸
    L. Walk Sliding
    使得武器在不同方向上移动,依赖于charactercontroller的移动方向
    X,y是武器扫射时像四周的移动。Z是行走是武器前后的移动。
    M. Input Velocity Scale
    N. Max Input Velocity
    武器摇摆的最大速度限制
    像看当前武器摇摆速度:Debug.Log(Controller.Velocity.magnitude)
  7. Rotation Springs
    A. Fall away
    设置武器在竖直运动(比如掉落或者走台阶)情况下的旋转
    B.Look sway
    决定了武器跟随鼠标反映做出的旋转。水平和竖直方向的鼠标运动会影响到武器沿着y和x轴的摇晃。武器沿着z轴的摇晃和水平方向上的鼠标移动有关,这在格斗武器比如剑棒中非常有用。
    C.Slope away
    当在地面移动时降低武器Fall away的效果。值为1.0时武器表现得像跟着玩家一起落地一样。为0时当controller着地时会取缔fall away效果。
  8. Retraction


设置retraction详细步骤
A. distance
raycast能达到的长度。典型值为0.5
B. offset
这个参数能抵消掉raycast水平和垂直方向的分量。当retraction打开后,一个debug ray会显示在scene中。若没碰到任何东西,这条ray为黄色。若碰到了,为红色。
C. Relax Speed
可调节武器在穿模情况后多快能调整到它的正轨z位置
8. shake
武器的四周晃动,主要是用于角色空闲状态时的动作,但也用于跳伞后武器的随风摇摆动作。
A. speed
决定了武器摇晃速度
B. Amplitude
武器围绕x,y,z轴的角度上的晃动力度。
9.Bob//又是熟悉的bob运动
A.Rate
和照相机bob差不多。Y一般为0.9
B.Amplitude
Y一般0.1
10.Step
为了模拟出一个很好的脚步和武器bob运动同步。每次武器bob运动到达它的底部,脚步力度都会被触发。
Tip:当使用step时候,尽量放大武器的y轴bob运动
这样能使得游戏更加真实。
A. min velocity
每次脚步作用在武器上时这个参数会设置出最小的控制器加速度。如果为0,这个step系统相当于被取消。
Debug.log(m_Controller.Velocity.sqrMagnitude)
B. step softness
每次动画的时间。数值越高,脚步的动画越慢
C. position force
决定了每次脚步接受多大的力度。这个数值最好小于0.01
D. Rotaion force
角度方向的力度。最好小于0.01
E. Position Balance
模拟出转换重量至左脚和右脚的效果,通过每一脚步更换一个位置的step。可以用它来营造出一种跛行的效果。
F. Rotation Balance
和E一样,只是角度上的效果。
11.sound
A.wield
端着武器的声音
B.unwield:放下武器的声音
12.Animation
A.wield/unwield
端着/放下武器的动画
B. ambient
一个随机的武器动画会在随机的空隙里播放。用于循环播放手和手指细小的动作,或者短暂的左手拿开的动作。
C.ambient interval
在ambient animations里的平均间隔时间

Unity插件:UFPS相关推荐

  1. Asset Store上常用的40个Unity插件汇总——进阶开发者必备Unity插件

    上篇文章着重介绍了Unity Asset Store(Unity资源商店)上一些超棒的资源与素材. unity老司机的资源推荐与常用插件汇总合集 - 简书 Unity插件资源购买小技巧 - 简书 本篇 ...

  2. 【Unity插件】最多的插件合集

    一.前言 ? 最近整理了一下文章,发现我分享了很多的插件,但是如果要查找某一款插件,还需要去搜索才能找到,很不方面,就想要将写过的所有的插件分享也好,教程也好,做一个汇总,然后这篇文章还会不断的更新, ...

  3. Unity插件之NGUI学习(4)—— 创建UI2DSprite动画

    创建一个新的Scene.并按 Unity插件之NGUI学习(2)创建UI Root,并在UI Root的Camera下创建一个Panel. 然后在选中Panel,在菜单中选择NGUI->Crea ...

  4. Unity插件-NGUI使用教程

    Unity插件-NGUI使用教程 本文提供全流程,中文翻译. Chinar坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 NGUI 一款强大 ...

  5. Unity插件之NGUI学习(8)—— Table和NGUI尺寸转换为世界坐标系尺寸

    依据 Unity插件之NGUI学习(2),创建一个UI Root,在UI Root下创建一个Texture作为背景图,并设置图片,在Wiget下调整大小:然后在UI Root下再创建一个Panel. ...

  6. UNITY插件信息收集

    UNITY插件信息收集 2018.8.7 UNITY超级优化神器 : Amplify Impostors posted on 2018-08-07 20:53 时空观察者9号 阅读(...) 评论(. ...

  7. AR+LBS街景实景红包PokemonGo游戏捉妖夺宝营销解决方案定制开发暨百度高德地图Unity插件SDK

    AR+LBS街景实景红包PokemonGo游戏捉妖夺宝营销解决方案定制开发暨百度高德地图Unity插件SDK 作者 komstone https://blog.csdn.net/komstone/ar ...

  8. Unity接入穿山甲广告(使用unity插件SDK接入)看这一篇就够了

    自己做的小游戏需要接广告,之前尝试过UnityAds和AdMob,但是都有点小问题.UnityAds对国内本土支持不好,Banner广告经常没有内容.Admob基本上都要对接到googlePlay,国 ...

  9. unityar自动识别人脸_三款Unity插件带您玩转人脸识别与模拟

    原标题:三款Unity插件带您玩转人脸识别与模拟 若想让游戏或电影中的虚拟角色表现得更加真实,面部表情是至关重要的.人脸识别技术则借助真人表演来为虚拟角色赋予丰富的表情与面部动作,小至皱眉带动眼部肌肉 ...

最新文章

  1. Windows上erl.exe的CPU使用率很高的问题【未解决】
  2. Java线程组(ThreadGroup)使用
  3. python getchar,Linux C编程学习:getchar()和getch()
  4. mysql5.5 function_mysql 5中的store function
  5. 有了这个告警系统,DBA提前预警不是难题
  6. 猛料一顿狂堆!华为P40 Pro详细参数被曝光
  7. eclipse后台提示computing additional info的解决办法
  8. Node做网页爬虫时遇到的Html entites对象造成乱码
  9. Asp.Net MVC4入门指南(8):给数据模型添加校验器
  10. C - A very hard mathematic problem (暴力枚举加二分)
  11. tkmybatis更新无效
  12. 为什么阿里,腾讯,百度和京东都是在开曼岛注册的?
  13. 学计算机女生找不到男朋友,女生找不到男朋友,大多都是这三个原因!
  14. 厦门商标注册网商标产权关系
  15. US100超声波测距模块的FPGA驱动
  16. 面向对象程序设计(c++)面试常问——for考研复试面试
  17. 【Qt】 Pro工程管理文件介绍
  18. 文档批量统计页码工具PageAID(Word、Excel、PPT、PDF)
  19. jmeter压测TIDB数据库
  20. Office Depot使用Apache Spark和 Analytics Zoo上的分布式Keras实现实时产品推荐

热门文章

  1. DTFT、DFS、DFT和FFT的关系 离散数字信号处理 数字角频率和模拟角频率
  2. 重转win10会出现dns服务器未响应,win10系统DnS服务器未响应的处理办法
  3. php cms建站,phpcms建站系统介绍以及phpcms建站流程
  4. windows+vscode配置C++环境
  5. ZeroMQ 中文指南 第四章 可靠的请求-应答模式【转载】
  6. 名词解释atm网络_计算机网络名词解释大全
  7. python连接oracle报错DPI-1047
  8. 高级职称17计算机,高级职称计算机考试
  9. 钱币兑换问题c语言编程,HDU 1284 钱币兑换问题
  10. Python 几行代码实现一键抠图,收费应用 BYEBYE