Unity界隈では話題の「ユニティちゃん」に手を出してみました。
今回からは[2Dユニティちゃん]に付属しているデモゲームのスクリプトなどを勉強していきたいと思います。
まずは、「イントロ&ゲーム」編です。
【過去回】
【Unity 2D】2Dユニティちゃんのスクリプトを勉強する-その1 | albatrus.com
【Unity 2D】2Dユニティちゃんのスクリプトを勉強する-その2 | albatrus.com
【Unity 2D】2Dユニティちゃんのスクリプトを勉強する-その3 | albatrus.com
【Unity 2D】2Dユニティちゃんのデモゲームを勉強する-壊れるブロック編 | albatrus.com
【Unity 2D】2Dユニティちゃんのデモゲームを勉強する-タイトル編 | albatrus.com
画面のスクロール
イントロ部分では、カメラが音楽が鳴り終わるまで移動します。この部分は[Main Camera]のスクリプトで制御しています。
1 2 3 4 5 6 |
void Update() { float newPosition = Mathf.SmoothStep(pos.x, target.position.x, Time.timeSinceLevelLoad / audio.clip.length); transform.position = new Vector3(newPosition, pos.y, pos.z); } |
Mathf.SmoothStep()
このコードでわかならかったのが[Mathf.SmoothStep()]です。これは「2点間の移動をスムーズに行う」関数です。
1 2 3 4 5 6 7 8 |
Mathf.SmoothStep(pos.x, target.position.x, Time.timeSinceLevelLoad / audio.clip.length); //第一引数:スタート地点 //第二引数:ゴール地点 //第三引数:移動する時間 //Time.timeSinceLevelLoad : Sceneがロードされてからの経過時間 //audio.clip.length : 音楽の長さ |
一定の速度ではなく終盤にかけて遅くなって移動します。
私自身数学がぜんぜんダメなので、どういった概念なのかイマイチピンときませんが、説明にあるように「スムーズ」に移動できます。
Mathf.SmoothStep – Unity Manual
画面の移動
ここでは当初、Scene内のオブジェクトを引き継いで次のSceneへ移動しているかと思っていたのですが、特に何かしているわけではなく同じGameObjectを配置しているだけでした。おそらくどちらかを先に作って、セーブ先を変えているだけでしょう。
ゲーム編 – 追尾カメラ
「ユニティちゃん」が移動する時に、カメラも追尾して動いているように表現しています。元からあるスクリプトでは、後戻りができないので、少し改造をしてみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
//targetはユニティちゃんのtransform.position //stopPositionは、画面の右端のtransform.position if(target.position.x < 0){ }else if(stopPosition.position.x < target.position.x){ }else{ Vector3 pos = _my_Camera.transform.position; if(Mathf.Abs(pos.x-target.position.x)>=0.000001f){ _my_Camera.transform.position = new Vector3(target.position.x,pos.y,pos.z); } } |
このようにすれば、右端・左端に到達したばあい背景(カメラ)が移動しません。
カメラはVector3
2Dゲームですが、カメラの移動には[Vector3]を使っていました。SendMessage()
ゴールに到着をした際に、音を鳴らします。その際に「ユニティちゃん」のスクリプトを呼び出しています。
この場合に利用をしているのが[SendMessage()]です。
1 2 |
//Clear()メソッドを呼び出す player.SendMessage("Clear", SendMessageOptions.DontRequireReceiver); |
最後に
これで「ユニティちゃん」2Dに使われている全てのスクリプトや[Inspector]に目を通すことができました。今までに使ったことがない色々な方法があり勉強になりました。
この「ユニティちゃん」を使って何かゲームができないかアイデアを考え中です。
![]() | Unityではじめる2Dゲーム作り徹底ガイド スマートフォンでも遊べる本格ゲーム開発に挑戦 大野 功二 SBクリエイティブ 2014-10-29 売り上げランキング : 16054 Amazonで詳しく見る |
