У меня проблема с вращением игрового объекта. Я могу повернуть объект в направлении/углу другого игрового объекта. Но после первого поворота игровой объект i вращается на основе дельта-поворота исходного игрового объекта. Он начинает вращаться в другом направлении, потому что он был повернут один раз, я думаю.Unity Quaternion сбрасывает базовую ориентацию
Итак, есть ли способ, чтобы после первого поворота я мог сбросить вращение, чтобы он снова перемещался в угол/направление вращения другого объекта?
Это мой текущий код ниже, я не эксперт по математике, поэтому я мог бы делать что-то неправильно. Итак, основная вещь, которую я хочу, - это то, что второй игровой объект вращается в том же направлении, в котором вращается базовый игровой объект но я не хочу, чтобы значения вращения были равны, значения вращения не должны быть одинаковыми, он должен вращаться только в том же углу/направлении, что и основной игровой объект. TiltAgainstObject - исходный игровой объект. Сценарий прикреплен ко второму игровому объекту.
Любая помощь приветствуется :).
public class Tilt : MonoBehaviour {
public GameObject TiltAgainstObject;
private float rotX;
private float rotY;
private float rotZ;
private float rotW;
private float deltaX;
private float deltaY;
private float deltaZ;
private float deltaW;
// Use this for initialization
void Start() {
rotX = TiltAgainstObject.transform.rotation.x;
rotY = TiltAgainstObject.transform.rotation.y;
rotZ = TiltAgainstObject.transform.rotation.z;
rotW = TiltAgainstObject.transform.rotation.w;
}
// Update is called once per frame
void Update() {
if(OVRInput.Get(OVRInput.Button.One))
{
deltaX = TiltAgainstObject.transform.rotation.x - rotX;
deltaY = TiltAgainstObject.transform.rotation.y - rotY;
deltaZ = TiltAgainstObject.transform.rotation.z - rotZ;
deltaW = TiltAgainstObject.transform.rotation.w - rotW;
gameObject.transform.localRotation = new Quaternion(gameObject.transform.rotation.x + deltaX,
gameObject.transform.rotation.y + deltaY,
gameObject.transform.rotation.z + deltaZ,
gameObject.transform.rotation.w + deltaW);
}
rotX = TiltAgainstObject.transform.rotation.x;
rotY = TiltAgainstObject.transform.rotation.y;
rotZ = TiltAgainstObject.transform.rotation.z;
rotW = TiltAgainstObject.transform.rotation.w;
}
}
Извините за запутанный вопрос, моя логика в образце «работает», но только для первого вращения. Во второй раз, когда я поворачиваю его, он больше не вращается в одном направлении, а только первый поворот. Я думаю, это потому, что во второй раз, когда вы поворачиваете углы поворота вращения второго объекта, не больше 0,0,0? Любая идея, как сделать второй раз, когда вы нажимаете кнопку, чтобы повернуть, что второй объект также вращается в одном направлении правильно ?. – LordrAider