HTC VIEW丨13. 替换手部模型、精确手抓握动作

一、基础配置

基础配置

 

 

二、替换手部模型

1、将左右手模型放到LeftController、RightController下,调整手模型位置

2、将下方A或B代码挂载到手模型上,并赋值状态机

3、实现能抓取物体

a、左、右手Left/RightController下新建空物体 AttachPoint ,挂载Rigidbody,取消使用重力。

b、将这两个抓取点分别赋值给左右手的组件 VRTK_InteractGrab 的 ControllerAttachPoint 属性。

 4、关闭[CameraRig]下方的两个左右手Model。

 

 

三、手部抓取动画

效果A:按下Trigger,播放完整抓取动画

新建脚本,内容如下:

该脚本分别挂载到自己新建的LeftController和RightController上,用以当获得按下Trigger键信息时,播放手的抓取动画。

别忘了改正播放抓取动画状态机对用的参数、勾选HasExitTime。


    
    
  1. using UnityEngine;
  2. using VRTK;
  3. //分别挂载到左右手HandController上去。
  4. public class Skode_VRHandController : MonoBehaviour {
  5. [ Tooltip("手模型的动画状态机,用以回调事件播放动画")]
  6. public Animator ani;
  7. void Start () {
  8. //按下Trigger事件
  9. GetComponent<VRTK_InteractUse>().UseButtonPressed += InteractUse_UseButtonPressed;
  10. //松开Trigger事件
  11. GetComponent<VRTK_InteractUse>().UseButtonReleased += InteractUse_UseButtonReleased;
  12. }
  13. private void InteractUse_UseButtonPressed(object sender, ControllerInteractionEventArgs e)
  14. {
  15. ani.SetBool( "isGrabbing", true);
  16. }
  17. private void InteractUse_UseButtonReleased(object sender, ControllerInteractionEventArgs e)
  18. {
  19. ani.SetBool( "isGrabbing", false);
  20. }
  21. }

 

效果B:根据按下的深度不同,手抓取的程度也不同

最下方的脚本,直接挂载到RightController上,给它赋值手的状态机。注意改下播放的动画名称,动画层级。

播放的动画是状态机动画名称

代码如下:


    
    
  1. using UnityEngine;
  2. using VRTK;
  3. //分别挂载到左右手HandController上去。
  4. public class Skode_VRHandController : MonoBehaviour {
  5. [ Tooltip("手模型的动画状态机,用以回调事件播放动画")]
  6. public Animator ani;
  7. void Start () {
  8. //获得按下Trigger键的深度
  9. GetComponent<VRTK_ControllerEvents>().TriggerAxisChanged += Skode_VRHandController_TriggerAxisChanged;
  10. }
  11. private void Skode_VRHandController_TriggerAxisChanged(object sender, ControllerInteractionEventArgs e)
  12. {
  13. //直接播放状态机中的动画,而不是状态机。
  14. //动画片段,位于状态机的0层,动画时间/进度
  15. ani.Play( "Grab", 0,e.buttonPressure);
  16. ani.speed = 0; //暂停动画,便于逐帧进行控制。
  17. }
  18. }

 

最终效果:

转载于https://skode.blog.csdn.net/article/details/88704160

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值