Sceneを変更した時にDOTweenが動かない?
初めてDOTweenを使ったときに少し困ったので備忘録としてメモしておく。以下の動画のゲームでDOTweenを使って空中で一回転する動作を付けたのだが、この動作で問題が起こった。
I’ve released a game for #icantdraw #gamejam named “Fly High, Surfing Duck.” It’s simple and casual game but has a ranking system. I hope you’ll have fun and be a top ranked-player! https://t.co/pFNlSGlOlC#itchio #gamedev #indiedev #indiegames #Unity pic.twitter.com/PTDsUldfJJ
— wakky_games (@GamesWakky) June 7, 2020
コードとしては、画面がクリックされたときにDOTweenが呼び出すようにしている。
transform.DOLocalRotate(new Vector3(0, 0, 360f), 1f, RotateMode.FastBeyond360)
.SetEase(Ease.Linear)
.SetLink(gameObject)
ゲームをスタートした時には特に問題ないのだが、Retryしてシーンを再ロードした後だと、なぜか一回転する動作が動かない。上のコードに以下を追加して、シーン切り替え前にDOTweenが正常にCompleteしていることはlogで確認したが、やはりシーンを切り替えると動かない。
.OnComplete(() => Debug.Log(“completed”));
ちなみにシーンは以下のScriptで呼び出している。
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
シーン切り替え前にDOTween.Clearで解決
結論から書くと、シーン切り変え前に以下のコードを追加することで解決した。
DOTween.Clear(true);
こちらのページで似たような症状について書いてあり、対策として紹介されていたのでやってみたら解決したという流れ。
もしかしてこれって、DOTweenを使うときのお作法だったりするのだろうか? 何はともあれ、解決したので良かった。
ちなみに作ったゲームはこちら
ついでなので、DOTweenを使いつつ作ったゲームも紹介しておく。
itch.ioのゲームジャムに初めて参加して出品した作品「Fly High, Surfing Duck!」。なるべく高い波を捕まえてジャンプするとクルっと回って高得点がもらえる爽快な(?)カジュアルゲーム。以下のページから遊べるので、お時間があればぜひ。
https://wakkyfree.itch.io/fly-high-surfing-duck
I’ve released a game for #icantdraw #gamejam named “Fly High, Surfing Duck.” It’s simple and casual game but has a ranking system. I hope you’ll have fun and be a top ranked-player! https://t.co/pFNlSGlOlC#itchio #gamedev #indiedev #indiegames #Unity pic.twitter.com/PTDsUldfJJ
— wakky_games (@GamesWakky) June 7, 2020