dotween
dotween copied to clipboard
DORotate RotateMode.FastBeyond360 rotating backwards
I'm wondering if DORotate RotateMode.FastBeyond360
is working properly. Given my understanding (which could definitley be wrong) FastBeyond360 should not rotate backwards. Yet when I set this flag I still seem to be rotating backwards taking the shortest path.
Am I missing something with my implementation or is this a bug. Part of the reason I'm asking is due to seeing this issue
Here is a gif demoing my issue. The yellow meteor as I understand it should rotate forwards rather than backwards given the RotateMode.FastBeyond360
flag. At least I think 😅.
And here is the code that produces it :)
var planetRotateToStartPositionsSequence = DOTween.Sequence();
planetRotateToStartPositionsSequence.Append(
earth.value.transform
.DORotate(
new Vector3(0, 0, selectedLevelInstanceData.value.associatedLevelData.startingEarthRotation),
speedToStartPlanetRotation, RotateMode.FastBeyond360)
.SetEase(planetRotationEase));
planetRotateToStartPositionsSequence.Insert(0,
selectedLevelInstanceData.value.goalMeteor.transform.DORotate(
new Vector3(0, 0, selectedLevelInstanceData.value.associatedLevelData.startingGoalMeteorRotation),
speedToStartPlanetRotation, RotateMode.FastBeyond360)
.SetEase(planetRotationEase));
planetRotateToStartPositionsSequence.AppendCallback(() =>
{
selectedLevelInstanceData.value.missile.transform.SetParent(null,true);
selectedLevelInstanceData.value.missile.missileActivator.Activate();
cinemachineLevelVirtualCamera.value.Follow = selectedLevelInstanceData.value.missile.transform;
Finish();
});
planetRotateToStartPositionsSequence.AppendInterval(delayAfterPlanetStartRotationsReached);
planetRotateToStartPositionsSequence.OnComplete(() =>
{
earthPhysicsSpin2D.StartSpin();
goalMeteorPhysicsSpin2D.StartSpin();
});
planetRotateToStartPositionsSequence.Play();
Thanks for any help in advance!
Putting 360° as the rotation without using RotateMode.FastBeyond360
wont rotate the object, because 360° is same as 0°. Adding RotateMode.FastBeyond360
allows u to not consider 360° equal to 0° and that means actually rotating 360°. From my understanding, thats what FastBeyond360 does.
If i have to guess, i would say its something related to the order of tweening/rewinding, i often get something like this, only to find that i was tweening the same object right before the current tween is finished, making it look like this. Like calling DoMoveY while DoPunchPosition is running
I have something similar going on. I had an object that keeps rotating on player input, and it was rotating on y axis. The RotateMode was the standard one, RotateMode.Fast
. I kept the same code and just changed the axis, and now its behaves the same way your object does. Even if I use RotateMode.FastBeyond360
, nothing changes.