【发布时间】:2021-11-23 18:42:57
【问题描述】:
我正在让一个物体随着手的旋转角度旋转。它运行良好,我能够旋转 3D 模型对象。不幸的是,现在我只希望对象在其 z 轴上旋转。我正在尝试使用 Quaternion.Euler (0, 0, rot.eulerAngles.z); 但不起作用,模型在所有 3 个轴上旋转。我该如何解决?
public GameObject targetHand;
[Header ("3D Model")]
public GameObject powerSwitch;
[Header ("Hand to 3D Model")]
public float activationDistance;
private Quaternion currentRot;
private Vector3 startPos;
private bool offsetSet;
void Update () {
if ((IsCloseEnough ())) {
Rotate ();
} else {
offsetSet = false;
}
}
void Rotate () {
SetOffsets ();
Vector3 closestPoint = Vector3.Normalize (targetHand.transform.position - powerSwitch.transform.position);
var rot = Quaternion.FromToRotation (startPos, closestPoint);
rot = Quaternion.Euler (0, 0, rot.eulerAngles.z); //Not working when I do this, why?
powerSwitch.transform.rotation = rot * currentRot;
}
void SetOffsets () {
if (offsetSet)
return;
startPos = Vector3.Normalize (targetHand.transform.position - powerSwitch.transform.position);
currentRot = powerSwitch.transform.rotation;
offsetSet = true;
}
bool IsCloseEnough () {
if (Mathf.Abs (Vector3.Distance (targetHand.transform.position, powerSwitch.transform.position)) < activationDistance)
return true;
return false;
}
【问题讨论】: