HTC VIEW☀️十、 替换手部模型、精确手抓握动作

目录

🟥 基础配置

🟧 替换手部模型

🟨 手部抓取动画

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

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


🟥 基础配置

基础配置

🟧 替换手部模型

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

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

3、实现能抓取物体

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

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

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

🟨 手部抓取动画

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

新建脚本,内容如下:

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

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

using UnityEngine;
using VRTK;
 
//分别挂载到左右手HandController上去。
public class Skode_VRHandController : MonoBehaviour {
 
    [Tooltip("手模型的动画状态机,用以回调事件播放动画")]
    public Animator ani;
 
    void Start () {
        //按下Trigger事件
        GetComponent<VRTK_InteractUse>().UseButtonPressed += InteractUse_UseButtonPressed;
        //松开Trigger事件
        GetComponent<VRTK_InteractUse>().UseButtonReleased += InteractUse_UseButtonReleased;
    }
 
    
    private void InteractUse_UseButtonPressed(object sender, ControllerInteractionEventArgs e)
    {
        ani.SetBool("isGrabbing",true);
    }
 
    private void InteractUse_UseButtonReleased(object sender, ControllerInteractionEventArgs e)
    {
        ani.SetBool("isGrabbing",false);
    }
}

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

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

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

代码如下:

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

最终效果:

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值