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ゲーム作り徹底ガイド スマートフォンでも遊べる本格ゲーム開発に挑戦 大野 功二 SBクリエイティブ 2014-10-29 売り上げランキング : 16054 Amazonで詳しく見る |