![見出し画像](https://assets.st-note.com/production/uploads/images/31150149/rectangle_large_type_2_e9b43800f3ea81ae5fd27942c8fdd824.png?width=1200)
Chapter23 会話文によくある三角のやつ
ゲームの会話シーンでは、『文章を表示させた後、プレイヤーがボタンを押すことで次の文章に切り替わる』というような仕様になっていたりする。
そういった場合に、プレイヤーに対して『ボタンを押したら会話が進む』ということを教えるために、画面上で三角形的なものが上下している光景を一度は見たことがあると思う。
話すより見てもらった方が早いか。
いつものお絵描きツールで作ったこれをスクリプトで上下に動かしている。
今日はそんな『オブジェクト永遠に上下に動かす』というアニメーションの作り方について書こうと思う。
まず、最初に宣言するのがこの4つ。
『speed』は『三角を動かす速さ』で[SerializeField]を頭に付けることによって『Unity』画面で値の変更を行えるようにしている。
『judge』は三角の移動方向を上向きにするか下向きにするかを判断させるための変数で、初期値として『0』を入れている。
『constX』はオブジェクトのX座標値で、このあとStart関数で初期のX座標値を代入して以降は変化させない。
『Y』は言わずもがなオブジェクトのY座標値である。こちらの値をUpdate関数内で小刻みに動かしていくことで、滑らかに上下しているように見せることが出来る。
続いてプログラムが開始して最初に行われるスタート関数内での処理を書いていく。
まず、変数『Y』にオブジェクトのY座標の初期値を入れる。
次に、X座標値の設定だが、『this.gamObject.transform.position.x』というのはこのスクリプトがアタッチされているオブジェクトの現在のX座標値という意味で。『=』を使ってその値を『constX』に代入している。
最後に、繰り返し処理されるUpdate関数内に記述したコードがこちら。
まず『if』文を使って、
・『もしもオブジェクトの現在のY座標値が[-0.22f]より小さくなれば→変数[judge]の値を[0]にする』
・『もしもオブジェクトの現在のY座標値が[-0.12f]より大きくなれば→変数[judge]の値を[1]にする』
というコードを記述しておく。
そのあと、また『if』文を使って、
・『もしも変数[judge]の値が[0]ならば変数[Y]の値を変数『speed』の値だけ加算させる』
→オブジェクトのY座標が『-0.22f』を下回った場合、Y座標の値を少しずつ増やす。
・『もしも変数[judge]の値が[1]ならば変数[Y]の値を変数『speed』の値だけ減算させる』
→オブジェクトのY座標が『-0.12f』を上回った場合、Y座標の値を少しずつ減らす。
というようなコードを書き、毎回ループの最後では、値の更新された『constX』と『Y』を用いて、オブジェクトの表示座標を新しく更新している。
このように、オブジェクトにアニメーションを与えたい場合は、『ループ毎に座標を更新していく』という考え方を持っておくと良い。
例えば『〇〇キーを押した場合』というような『if』文と組み合わせたりすれば、横スクロールアクションゲームなんかを作ることも可能である。
ということで、本日はここまで。
ご閲覧ありがとうございました。
この記事が気に入ったらサポートをしてみませんか?