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里的平均间隔时间

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值