使用相对 VR 控制器旋转应用游戏对象旋转?
Apply game object rotation using relative VR controller rotation?
我在 Unity 中有一个游戏对象,我希望能够使用我的 VR 控制器进行旋转。我可以通过执行以下操作来实现这一目标...
bool triggerClicked = false;
Transform rightHand = Player.instance.rightHand.transform;
void Update () {
if (triggerClicked) {
transform.eulerAngles = rightHand.eulerAngles;
}
{
...但问题是当我按下触发器然后按预期工作时,我想要旋转的对象最初会捕捉到控制器的当前旋转。我需要它相对于对象的初始旋转移动。正确的做法是什么?
解决了。您需要在第一次单击触发器时捕获一些初始四元数,然后计算相对差异并应用它们。这可以防止初始捕捉到旋转问题。
private bool triggerClicked = false;
private Transform rightHand = Player.instance.rightHand.transform;
private Quaternion initialObjectRotation;
private Quaternion initialControllerRotation;
private bool set = false;
void Update () {
if (triggerClicked) {
if(set == false)
{
initialObjectRotation= transform.rotation;
initialControllerRotation = rightHand.rotation;
set = true;
}
Quaternion controllerAngularDifference = initialControllerRotation * Quaternion.Inverse(rightHand.rotation);
transform.rotation = controllerAngularDifference * initialObjectRotation;
}
else
{
set = false;
}
{
我在 Unity 中有一个游戏对象,我希望能够使用我的 VR 控制器进行旋转。我可以通过执行以下操作来实现这一目标...
bool triggerClicked = false;
Transform rightHand = Player.instance.rightHand.transform;
void Update () {
if (triggerClicked) {
transform.eulerAngles = rightHand.eulerAngles;
}
{
...但问题是当我按下触发器然后按预期工作时,我想要旋转的对象最初会捕捉到控制器的当前旋转。我需要它相对于对象的初始旋转移动。正确的做法是什么?
解决了。您需要在第一次单击触发器时捕获一些初始四元数,然后计算相对差异并应用它们。这可以防止初始捕捉到旋转问题。
private bool triggerClicked = false;
private Transform rightHand = Player.instance.rightHand.transform;
private Quaternion initialObjectRotation;
private Quaternion initialControllerRotation;
private bool set = false;
void Update () {
if (triggerClicked) {
if(set == false)
{
initialObjectRotation= transform.rotation;
initialControllerRotation = rightHand.rotation;
set = true;
}
Quaternion controllerAngularDifference = initialControllerRotation * Quaternion.Inverse(rightHand.rotation);
transform.rotation = controllerAngularDifference * initialObjectRotation;
}
else
{
set = false;
}
{