Hi everyone,
I’m trying to rotate an object by multiplying 2 quaternions with each other. The issue is that when I would like to rotate it, it rotates in the wrong axis.
I’ve added a snippet of code and hope that someone would be able to help me with this issue.
public void UpdateTransform()
{
Vector3 desiredPosition = attachedMove.transform.position;
Quaternion desiredRotation = attachedMove.transform.rotation;
bool positionAltered = false;
bool rotationAltered = false;
while (movementQueue.Count > 0)
{
positionAltered = true;
PositionSet translation = movementQueue.Dequeue();
if (translation.TranslationType == TranslationType.Additive)
desiredPosition += translation.Translation;
else if (translation.TranslationType == TranslationType.Override)
desiredPosition = translation.Translation;
}
while (rotationQueue.Count > 0)
{
rotationAltered = true;
RotationSet rotation = rotationQueue.Dequeue();
Debug.Log("[Maarten] Adding Rotation: " + rotation.Rotation.eulerAngles + " | Old Rotation: " + desiredRotation.eulerAngles);
if (rotation.TranslationType == TranslationType.Additive)
desiredRotation *= rotation.Rotation; // This is executing.
else if (rotation.TranslationType == TranslationType.Override)
desiredRotation = rotation.Rotation;
Debug.Log("[Maarten] Current Rotation: " + desiredRotation.eulerAngles);
}
if (attachedMove.Rigidbody)
{
if (positionAltered)
attachedMove.Rigidbody.MovePosition(desiredPosition); // This is also executing.
if (rotationAltered)
attachedMove.Rigidbody.MoveRotation(desiredRotation);
}
else
{
if (positionAltered)
attachedMove.transform.position = desiredPosition;
if (rotationAltered)
attachedMove.transform.rotation = desiredRotation;
}
}
Thanks in advance!
- Maarten