前提・実現したいこと
ゲーム内で、Canvasのプレハブを生成し、そのCanvasの中に入っているImageに対してアニメーションをさせたいと考えています。
試したこと
あるゲームオブジェクトから以下のようなコードを実行しました
DOTween.Init (); GameObject g = Instantiate(gameOverCanvasPrefab, new Vector2(0, 0), Quaternion.identity); //GameOverImage1はgameOverCanvasPrefabの孫として存在するImage GameObject.Find ("GameOverImage1").GetComponent<RectTransform> () .DOShakeScale ( 10.0f );
しかしImageは一度変形し、そのまま止まってしまいました。
想定ではDOShakeScaleの影響で10秒間大きさが変化し続けるものだと考えておりました。
また、DOShakeScaleをDOMoveに変更し、以下のように記述したところ、1秒間動くようなことは無く、開始直後の一瞬だけ初期位置からわずかに移動してそのままとまったきりになってしまいました。
GameObject.Find ("GameOverImage1").GetComponent<RectTransform> ().DOMove ( Vector3.one, 1.0f );
根本的な使い方が誤っているのでしょうか。
DOShakeScaleはランダムにサイズの変更、引数はアニメの秒数です。ゆっくりすぎて変化が見えない可能性は無いでしょうか。Imageを目視するだけでなく、インスペクターの値が変化しているか確認してください。また、エラーが出ていないか確認し、出ているならエラー文をそのまま検索するか質問に追記してください。
> sakura_hana様 回答ありがとうございます。インスペクタ上でRectTransformのScaleやwidthの値を確認しながら何度か動かして見たところ、上記コード実行直後にscaleの値が変化していました。しかし開始直後の1度だけで、引数に指定した10秒間変わり続けるような動きにはなっておりませんでした。また、エラーは特に発生しておりませんでした。
とすると私には「何かの手違いで開始直後に止めている」ぐらいしか思い付かないです……ソースコード全文があると回答が付きやすいかと思います。
> sakura_hana様 回答ありがとうございます。大変申し訳ありません直前にTimeScaleを0にしていました・・・。なぜかコレを1にしてみようという発想がありませんでした。DOShakeScale ( 10.0f ).SetUpdate(true);とすることで無事に動かすことができました。ありがとうございました!
回答2件
あなたの回答
tips
プレビュー