我只想用手在 Y 轴上旋转一个物体。我也能够在我的实施中实现这一点。 问题在于保存最后一次旋转,当手再次尝试旋转对象时,对象的开始旋转会完全捕捉到新的旋转。
我该如何解决这个问题?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RotateObj : MonoBehaviour {
private Quaternion currentRot;
private Vector3 startPos;
public Transform hand;
private bool offsetSet;
void Start () {
}
void Update () {
Rotate ();
}
void SetOffsets () {
if (offsetSet)
return;
startPos = Vector3.Normalize (hand.transform.position - this.transform.position);
currentRot = this.transform.rotation;
offsetSet = true;
}
void Rotate () {
SetOffsets ();
Vector3 closestPoint = Vector3.Normalize (hand.transform.position - this.transform.position);
var rot = Quaternion.FromToRotation (startPos, closestPoint);
rot = Quaternion.Euler (0, rot.eulerAngles.y * 10f, 0);
this.transform.rotation = rot * currentRot;
}
}
好吧,我并没有真正了解“手”或旋转对象本身的假定运动是什么,但看起来您的代码正在执行以下操作:
总而言之,我认为上面的代码没什么意义,可以建议您两件事: