案例实现
之前我们实现了自定义手势的抓取,通过靠近手枪按下按键抓取手枪,但是有时候我们希望手枪一开始就出现在手上,通过阅读源码后,我尝试了下面这个示例代码
可以看到,我将原先自带的Throwable脚本移除,并添加了自定义的GetGun脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Valve.VR.InteractionSystem;
public class GetGun : MonoBehaviour
{
[SerializeField] Hand hand;
public Hand.AttachmentFlags attachmentFlags = Hand.AttachmentFlags.ParentToHand | Hand.AttachmentFlags.DetachFromOtherHand | Hand.AttachmentFlags.TurnOnKinematic;
public Transform attachmentOffset;
void Start()
{
}
private void Update()
{
if(Input.GetKeyDown(KeyCode.Space))
{
StartCoroutine(nameof(GetGUn));
}
if (Input.GetKeyDown(KeyCode.A))
{
hand.DetachObject(gameObject,false);
}
}
IEnumerator GetGUn()
{
yield return new WaitForSeconds(1f);
hand.AttachObject(this.gameObject, GrabTypes.None, attachmentFlags, attachmentOffset);
hand.HideGrabHint();
}
}
需要注意的一点是,当不需要手枪或者转场时,我们一定要将手枪从手里移除(按下A键执行的代码)避免出错 以上就是我对该功能的尝试实现,如有错误,欢迎指点
|