功能模块
在SteamVR插件中的InteractionSystem中存在LineraMapping与LinearDisplacement组件,它们配合CircularDrive组件中的输出参数Linear Mapping可以实现用手旋转物体然后产生其他功能的作用
实际例子
在这个例子中我们旋转一个阀门,让其旋转的同时也在会在阀门栓上进行移动从而与现实相吻合。 Circular Dirve脚本中输出参数Linear Mapping到脚本LinearMapping中,然后Linear Displacement脚本基于LinearMapping脚本的value参数上下移动阀门,若有其他需求可以类似Linear Displacement脚本基于value参数做出自定义操作实现我们自己想要的功能。
using UnityEngine;
using System.Collections;
namespace Valve.VR.InteractionSystem
{
public class LinearDisplacement : MonoBehaviour
{
public Vector3 displacement;
public LinearMapping linearMapping;
private Vector3 initialPosition;
void Start()
{
initialPosition = transform.localPosition;
if ( linearMapping == null )
{
linearMapping = GetComponent<LinearMapping>();
}
}
void Update()
{
if ( linearMapping )
{
transform.localPosition = initialPosition + linearMapping.value * displacement;
}
}
}
}
回到例子中我们为阀门添加碰撞体和脚本并调整脚本属性即可实现 旋转阀门并让阀门顺着阀门栓移动的功能
|