【Unity 2D】2Dユニティちゃんのデモゲームを勉強する-イントロ &ゲーム編

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]のスクリプトで制御しています。 [c]

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); }

[/c]

Mathf.SmoothStep()

このコードでわかならかったのが[Mathf.SmoothStep()]です。 これは「2点間の移動をスムーズに行う」関数です。 [c]

Mathf.SmoothStep(pos.x, target.position.x, Time.timeSinceLevelLoad / audio.clip.length);

//第一引数:スタート地点 //第二引数:ゴール地点 //第三引数:移動する時間

//Time.timeSinceLevelLoad : Sceneがロードされてからの経過時間 //audio.clip.length : 音楽の長さ [/c]

一定の速度ではなく終盤にかけて遅くなって移動します。 私自身数学がぜんぜんダメなので、どういった概念なのかイマイチピンときませんが、説明にあるように「スムーズ」に移動できます。

Mathf.SmoothStep - Unity Manual

画面の移動

ここでは当初、Scene内のオブジェクトを引き継いで次のSceneへ移動しているかと思っていたのですが、特に何かしているわけではなく同じGameObjectを配置しているだけでした。 おそらくどちらかを先に作って、セーブ先を変えているだけでしょう。

ゲーム編 - 追尾カメラ

「ユニティちゃん」が移動する時に、カメラも追尾して動いているように表現しています。 元からあるスクリプトでは、後戻りができないので、少し改造をしてみました。 [c] //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);


}

}

[/c]

このようにすれば、右端・左端に到達したばあい背景(カメラ)が移動しません。

カメラはVector3

2Dゲームですが、カメラの移動には[Vector3]を使っていました。

SendMessage()

ゴールに到着をした際に、音を鳴らします。 その際に「ユニティちゃん」のスクリプトを呼び出しています。 この場合に利用をしているのが[SendMessage()]です。 [c] //Clear()メソッドを呼び出す player.SendMessage("Clear", SendMessageOptions.DontRequireReceiver); [/c]

最後に

これで「ユニティちゃん」2Dに使われている全てのスクリプトや[Inspector]に目を通すことができました。 今までに使ったことがない色々な方法があり勉強になりました。 この「ユニティちゃん」を使って何かゲームができないかアイデアを考え中です。

Unityではじめる2Dゲーム作り徹底ガイド スマートフォンでも遊べる本格ゲーム開発に挑戦Unityではじめる2Dゲーム作り徹底ガイド スマートフォンでも遊べる本格ゲーム開発に挑戦
大野 功二

SBクリエイティブ 2014-10-29
売り上げランキング : 16054

Amazonで詳しく見る