DOPunchScaleを実行中にDOTween.Kill()をしてから、スケールを1に戻しもう一度DOPunchScaleを実行するといったコード。普通は連続で実行してもスケールを1に戻しているのでスケールが保たれるはずですがなぜかSequenceで実行するとどんどんデカくなります。具体的には次のコードです。
c#
1public void Test(GameObject go) 2{ 3 if(showInfoSeq != null) DOTween.Kill(showInfoSeq); 4 go.transform.localScale = Vector3.one; 5 showInfoSeq = DOTween.Sequence() 6 .Append(go.transform.DOPunchScale(Vector3.one * 1.1f, 1.0f, 10, 0)); 7}
また、Sequenceを使わずにTweenだけで書いたもの(こっちはデカくなりません)
c#
1public void Test(GameObject go) 2{ 3 go.transform.DOKill(); 4 go.transform.localScale = Vector3.one; 5 go.transform.DOPunchScale(Vector3.one * 1.1f, 1.0f, 10, 0); 6}
これは何かのバグなんでしょうか?それとも私のコードに不備があるのでしょうか?知っている方は、ぜひ教えてほしいです。
これ、バグではなく、Sequence に入れた DOPunchScale が “相対値として蓄積される” ために起きるから。
DOTween の挙動をしっかりと理解しないと。
DOTweenのPuch系は現在のスケールに相対的にPunchを加える。(つまりデカくなる)
Transform の Tween も Kill してみて。
DOTween.Kill(showInfoSeq);の部分をshowInfoSeq.Kill();にすることで無事、解決しました。どうやらDOTween.Kill()関数はidを指定してそれをKillする関数だったらしく、私のDOTweenの理解不足が原因でした。質問に回答してくださり、ありがとうございました。
回答1件
あなたの回答
tips
プレビュー