オブジェクトを左右に自動で移動させる方法【Unity】

みなさんお久しぶりです。またまた結構な期間が空いてしまいました。

前回どこまで作業していたのか振り返る事から始まる今日この頃なわけですが、とりあえず的当てゲームのベースがある程度完成したんでしたね。

とはいっても、ゲームを実行してみるとまだまだ味気ないです。

現状だと的は常に同じ場所で止まっているので、今回は止まっている的を移動させて難易度を高めたいと思っています。

スポンサーリンク

的を左右に自動で動かしてゲーム性を向上させる

バリエーションとしては、上下左右に的を動かしたり、ランダムな場所に的を出現させたり、さまざまなパターンがあると思います。

難易度的には、左右に移動するのがステージ1、ランダム出現がステージ2といった感じですかね。

まずは、基本パターンである、左右移動を実装していきます。

的を自動で左右移動させるスクリプトを作成

自動で移動させるスクリプトは意外と簡単に作ることが出来ます。

オブジェクトを左右に自動で動かすスクリプト

じゃん、たったこれだけのソースコードでOKです。

とりあえず、このスクリプトを的にアタッチしてゲームの実行を確認してみましょう。

的が左右に自動で移動する様子

こんな感じで、左右にゆらゆらと揺れていれば成功です。

自動的に、左右及び上下に動かす時に便利なのが、「Sin関数」です。

三角関数で出てくるアレですね。数学が苦手な人にとっては嫌なキーワードかもしれませんが、ゲームを作る上では非常に役に立つんですよ!

というわけでソースコードを解説していきますね。

まずは、スタートメソッド内にて、的のポジションを取得しています。

次に、16行目にあるTime.timeですが、これはゲームを開始してからの経過時間の事です。

Math.Sin()にTime.timeを渡すことで、「-1」~「1」の値を取得することが出来ます。

そのままの値だと移動範囲がとても狭いので、「10.0f」を掛けています。

最後にX軸のポジションに足すことで、左右に自動で動くようになります。

YとZのポジションは何もする必要がないので、そのままの座標にしています。

移動させる方向を変えたい場合は、Sin関数の位置を変えるだけで応用できますね。

上のアニメーションを見る限り、移動範囲がやや小さい気がします。

掛け合わせている「10.0f」を「50.0f」にしてみます。

的が左右にダイナミックに移動する様子

するとこんな感じになりました。

かなりダイナミックな動き方をしていますね。

ボールを飛ばしてみましたが、なかなか当たらずぐーんと難易度がアップした気がします。

一回で当てるのは至難の業ですね~。まぁこれくらい難しい方が好きなんですけどね。

今回のように、周期的な動きを実現したいのであればSin関数がオススメです。ゲームを作る上ではとても重宝するので、是非試してみてください。