1.はじめに
この記事は正真正銘アドベントカレンダー2017の10日目、11/1の記事です。本記事は、Unityに興味があるけど実際に使ったことがない人からUnityをインストールしたけど何すればいいのかわからない人向けの、非常に初歩的な内容を取り扱います。
まぁそんな感じな上教えるのが素人なので、ある程度以上Unityに触っている人はブラウザバックするか耐えて読みましょう。
また、プログラムの解説は尺の都までありません。
あ、お相手は私、tyoxu(ちょーしゅ)です。
この記事では最終的に↑のGIFみたいなやつを通じて、
- Unityを導入
- プロジェクトの製作
- オブジェクトの配置
- コンポーネントとは
- Animationとは
- Animatorとは
- materialとは
- スクリプトの書き方
1. はじめに
2. ゆにていを しろう
3. ゆにていを はじめよう
4. おぶじぇくとと こんぽーねんと
5. まてりあるって なぁに?
6. ぷろぐらむを かいてみよう
7. あにめーたーと あにめーしょん
8. ちゃんと できたかな?
2.ゆにていを しろう
Unityって一体全体何なんでしょうか。たまに聞いたり見かけたりするこの単語ですが、wikipediaの該当記事には、つまり、Unityの正体はゲーム製作のために必要なものが大体全部入った、ゲーム製作ソフトな訳です。
実は、我々traPのゲーム製作活動は色々あるのですが、そのうちいくつかはUnityを使っています。この記事を読めばあなたも即戦力ってわけですね! 次の章では実際にUnityをダウンロードして使ってみます!!!
3.ゆにていを はじめよう
というわけで、今度は実際にUnityを皆さんにダウンロード&インストールしてもらいます!!! まずは 1.まずはこのサイトにアクセスし、「プラン選択&ダウンロード」をクリックします。2.次に、特に理由がない場合は「Personalを試す」をクリックし、利用規約を読んで大丈夫そうならチェックをつけ、インストーラーをダウンロードしてください。
3.インストーラーを起動し、指示に従って進めていきます。途中、こんな感じの画面が出ると思います。
人によって何にチェックがついてるかは異なると思いますが、基本的にいじらずにそのままcontinueを押すのがいいと思います。最悪あとでインストーラーを起動すればもう一度選択できます。
4.さて、インストールされたものを起動すると、多分こんな感じの画面が表示されると思います。
どうやらUnityAccontというものを持っていると色々なサービスにアクセスできるみたいですが、今回は「Work Offline」を押すことをお勧めします。
5.すると、こんな感じの画面が表示されると思います。されなかった場合は、右上のNEWを押しましょう。
白いところを適切に埋めたら、3Dのところの丸が選択されていることを確認して、いよいよ「Create Project」を押しましょう!
4.おぶじぇくとと こんぽーねんと
・・・少し時間が経てば、こんな感じの画面が表示されていると思います。これがUnityのメイン画面です。人によってはウインドウ配置が画像と異なる場合があります。そういう場合はメニューのwindow→Leyout→2by3を選択すればこの形になります。(この形にする必要はあまりありませんがこの記事はこの形のウインドウで進めます。)
各画面の説明はこんな感じです。
さて、とりあえず何かをシーン、つまりこの画面の上に置いていきましょう。
何かを置くには、Hierarchyウインドウの上で右クリック→メニュー下の方の設置したいものを選択の流れです。
とりあえず、まっさらな地面を設置したいので、下の画像の赤丸のやつを左クリックして見てください。
すると・・・
地面です!地面が出てきました。
InspectorとかHierarchyとかに色々表示されていますが、とりあえずGame画面での視点があんまり良くないので、少しカメラの位置と角度を修正しましょう。
ここで、HierarchyでMainCameraを左クリックし、画面左上の方にある何やら色々なボタン群に注目します。
まずは左から2番目のボタンを押すと、こういう感じの矢印が表示されます。
されない場合はHierarchyでMainCameraが選択されてるか確認しましょう。
この状態でSceneウインドウ上の物をドラッグすると、動きます。
代わりにこの矢印をドラッグすると、矢印の方向にのみ動きます。分かりやすいね。
続いて、真ん中のボタンを押します。ポチッと。
Cameraアイコンの周りに三つの円が表示されました。それぞれの円をなぞるようにマウスでドラッグすると、Cameraが回ります。下のGameウインドウを見ると回転しているのが良くわかると思います。
さて、Scene上でオブジェクトの位置を操作する方法を書いてきましたが、実は他にもオブジェクトの位置を操作する方法があります。
Inspectorを見てみましょう。
何やら色々書いてありますね。下の方は今回いじらないので説明は割愛しますが、上の方にあるTransformの欄は超重要です。
試しに、ここに注目しながら先ほどのようにCameraを適当に動かしたり回転させたりして見ましょう。
・・・
どうでしょうか。Transformの各欄の値が変化していると思います。
そうですね。ここの値がシーン上での物の位置、座標を表しています。
Inspector上から直接いじることもできます。試しに下の数字に合わせてみましょう!
めっちゃいい感じのアングルになりましたね!
まぁカメラのアングルに関しては別にどこでもいいんですが、この記事ではこの位置を基準に書いていきます。
さて、次に空から落ちてくるドラム缶を作っていきます。
先ほどと同じように、今度はSylinderを設置します。
この位置に表示されていない場合はHierarchyで見るとカメラに従属する形になっている可能性があります。
そういう時はHierarchy上のCylinderを画像のように操作してあげましょう。
これを元にドラム缶を作ります。まずは先ほどと同様、上に移動させて・・・いざ、落としてみましょう!!!
画面中央の上の方にある、▶︎(再生マーク)のボタンを押してみましょう。そうすることによって、Unity上で止まっていた時間が進み始めます。
押してみましょう!ポチー
・・・
・・・
・・・・・・・・・・
落ちませんね。あれ〜?
それはその筈です。そのCylinderには、物理演算が適応されていないのです。
で、どうやれば物理演算を適用させられるかなのですが、Inspectorに戻ってみます。
何やら意味ありげにAdd Componentというボタンがありますね。とりあえず押してみましょう。
はわわわわ・・・なんか色々出てきました。
これらはComponentというもので、物に色々な特性を付与します。試しに、
上の白い欄にrigidbodyと入力して、2Dじゃない方を左クリックします。
Inspectorにrigidbodyが追加されましたね。これが、物に物理的な動きの要素を追加するComponentというわけです。
それでは、本当に落下するかどうか、もう一度▶︎ボタンを押しましょう。
落ちましたね。
落ちたのを確認したら、細かいところを調整します。
ドラム感を出すために、まずはこのCylinderの名前をDrumにします。
名前の変更はここ。
CylinderとなってるところをDrumに変えてあげましょう。
次に、今度はDrumをInspectorで選択した状態でCylinderを三つとsphereを二つ生成しましょう。
それらのTransformを以下のように設定します。
名前はわかるなら割と適当でいいです。
そうしたら、同じように、今度はsphere二つのTransformを、
という感じに設定します。
ついでに、sphereについている「Spherer Collider」の横のチェックボックスを外しておいてください。
実は、先に紹介したrigidbodyとは別に、物理的な当たり判定を追加するのがColliderと名前についたComponentなんですが、このShpere Colliderは邪魔です。チェックボックスを外せば、そのComponentは一時的に無効になります。
設定が終わると、こんな感じになっていると思います。
だいぶドラム感が出てきましたね。
ここまでできたら、HierarchyのUntitledと書いてあるところで右クリックをし、SaveSceneAs(名前をつけてシーンを保存)またはSaveScene(上書き保存)を選択し、適当な名前をつけて保存しましょう。
次章ではこれに色をつけてよりドラム感を出します。
5.まてりあるって なぁに?
Materialとは、Unity上の物がどのような色をしているかを設定する機能です。(物理的な跳ね返り係数とか摩擦係数とかを設定するPhisic Materialも別にあります。)
作り方ですが、まずはProjectウインドウ内の、Assetsと書いてあるところで右クリックをします。
こんな感じのメニューが出てくるので、Create→Materialと操作します。
これがMaterialのInspectorです。今回はAlbedoとMetaricだけいじれば十分です。
Albedoの横の白い四角をクリックするとこんな画面が出てきます。
上側は色相、彩度、明度で、下側はRGBAで色を指定します。カラーコードを使用することもできます。
適当にいじってドラム感がある色を作りましょう。そうしたら、下のMetaricの数字を1にしましょう。
できたら、ProjectウインドウのこのMaterialを、さっきのシーンのHierarchyのDrumの上にドラッグアンドドロップしてみましょう。すると・・・
ドラム缶だコレ!!!!!
ドラム感はそれほどありませんが、それでも白い円柱よりはドラム缶です。やったぁ!
次の章では、いよいよプログラムを書きます!!!
6.ぷろぐらむを かいてみよう
はい。プログラミングの時間です。まずは、ドラム缶を出すボタンを作ってみましょう!
最初に、Hierarchy上で右クリック→Create Emptyを選択します。
この操作で設置されるのは、見えない物です。
それでも物ではあるので、ここではこれをドラム缶発射の基準点として使います。
Hierarchyで新しく追加されたGameObjectを選択して、Inspectorで座標を次のようにします。
そうしたら、ボタンの方を作っていきます。
Unityにはクリックで操作できるボタンがあるので、それを使っていきます。
Hierarchyで右クリック→UI→buttonと操作します。
Gameウインドウにボタンが追加されていますね。
ここでふとHierarchyに目を戻すと、
なんか新しく色々増えていますね。
このうちCanvas、EventSystemについてはButtonの動作に必要なものなので触らないでください。
Buttonが本体で、Textは中に表示されているテキストですね。
ただ、このボタンを押しても当然なにも起りません。
というわけで、プログラムが必要になってきます。
まずは、ドラム缶発射のために設置したGameObjectを選択して、先ほどと同様にAddComponentを選びます。
そうしたら、下の方にあるNew scriptを選択します。
選ぶと下の様なメニューが出てくるので、下の様に書きます。
ここで名前を記事と違うものにするとバグります。気をつけましょう
書けたら、Create and Addを選択します。
summondrumがProjectとGameObjectに追加されました。
Projectのsummondrumをダブルクリックで開くと、こんな感じの画面が出ます。
この画面は、Unityと一緒に追加されているプログラムエディタ、MonoDeveropのメイン画面です。
ここにプログラムを書いていくわけですね。
そうしたら、最初に書いてあったものを消して、下のものをコピーアンドペーストします。
//summondrum.cs
using System.Collections;//ないと動きません
using System.Collections.Generic;//ないと動きません
using UnityEngine;//ないと動きません
public class summondrum : MonoBehaviour {//ないと動きません
public GameObject summon;//複製するオブジェクトを選択
public void summonDRUM(){//呼ばれた時にドラム缶を複製する関数
Instantiate (summon,transform.position,Quaternion.identity);//ここで実際にオブジェクトを複製する。
}
}
出来たら、メニューのfile→saveを押しましょう。
うまく出来ているなら、GameObjectのInspectorのsummondrumに設定枠として、summonが追加されていると思います。
この欄の右側の○を押すと次の様な画面が出てきます。
タブをAssetsからSceneに切り替えて、さっき作ったDrumをダブルクリックします。
選択が成功したら、summonの欄がNoneではなくDrumになるはずです。
今度は、ボタンの設定をします。Unity本体に戻って、Buttonを選択します。
ButtonのInspectorの下の方のOn Click()のところの+マークを押して、以下の様に設定します。
出来たら、▶︎ボタンを押して、Gameを動かしてみましょう!!!
・・・
多分動いていますが・・・なんか地味ですね。
ちょっとドラム缶に細工をしましょう。
Drumを選択して、先ほどと同じ感じでdrumという名前のscriptを作ります。
中身に最初に入っていたものを消して、下のものをコピペしましょう。
誤ってsummondrumの中身を消さない様に気をつけましょう。
//drum.cs
using System.Collections;//ないと動きません
using System.Collections.Generic;//ないと動きません
using UnityEngine;//ないと動きません
public class drum : MonoBehaviour {//ないと動きません
private Rigidbody rigid;//rigidbodyを入れるための箱を用意
void Start () {//このオブジェクトが出現した時に処理されます
rigid = GetComponent<Rigidbody> (); //このオブジェクトのrigidbodyを取得
this.transform.rotation = Random.rotation;//ランダムな角度になる
rigid.AddForce (Random.insideUnitSphere*100);//ランダムな初速度になる。
}
}
このプログラムは何をしているのかというと、このドラム缶が複製された時に、ランダムな角度になってランダムな速度で吹っ飛ぶ様にしました。
割といい感じになってきました。
ここまできたらあと少しです。
頑張りましょう!!!!
7.あにめーたーと あにめーしょん
最後に、地面のドラム缶を押し出す板を作ります。 Hierarchy右クリック → 3D ObJect → Quad を選択します。 そうしたら、Transformの欄を以下の様に書き換えます。ついでに上の画像のチェックボックスをつけておきます。
そうしたら、Window→Animationから、以下の画面を呼び出します。
これは物のAnimationを追加、管理するものです。
まずはCreateを押しましょう。
Animationの名前は、taiki.animとします。
この様な画面になるので、赤いバーが左端の0:00のところにあるのを確認して、Add Propertyを押します。Transformの欄のPositionとRotationを追加しましょう。
これで、とりあえず待機中のAnimationができました。(待機中なので動かないですがAnimationです。)
次に、起き上がって倒れるAnimationを作りましょう。
taikiと書いてあるところを左クリックし、Create New Clipを選択し、
先ほどの要領でokiagari.animを新規作成します。
先ほどと同様にPositionとRotationを追加したら、1:00にある3つの四角形を右にドラッグして、5:00まで動かします。
次に赤い再生ラインをドラッグして、2:00のところに持っていきます。(単位は病:1/60秒です)
そうしたら、QuadのInspectorのTransformの欄が一部赤くなっているのを確認して、そこにこの値を入力します
最後に、赤いバーを3:00まで動かして、もう一度上の値をTransformに入力しましょう。
こういう感じになっていれば大丈夫です。
Animationウインドウを閉じて、Projectウインドウのokiagariを選択し、InspectorのLoop Timeのチェックを外します。外さないと無限ループします。
次に、Quadを選択します。
さりげなくAnimatorなるComponentが増えていますね。
ControllerのところのQuadをダブルクリックすると、こんな感じの画面が出てきます。
この画面はAnimatorというもので、先ほど作ったAnimationの遷移を調整しています。
okiagariを右クリックして、Make Transitionを選択し、次にExitを右クリックすると、二つのブロックの間に矢印が表示されます。
細かい設定もできますが、今回は特にしないで大丈夫です。
そうしたら、QuadにAdd Componentからokiagaributtonを新規作成し、下のものをコピペします。
using System.Collections;//ないと動きません
using System.Collections.Generic;//ないと動きません
using UnityEngine;//ないと動きません
public class okiagaributton : MonoBehaviour {//ないと動きません
private Animator anim;//Animatorをプログラムが操作できる様にする
void Start(){
anim=GetComponent<Animator>();//Animatorを登録する。
}
public void button(){
anim.Play ("okiagari");//Animatorの"okiagari"という名前のAnimationを再生する。
}
}
そうしたら、さっき作った方の(ドラム缶じゃない方の)ボタンを選択し、先ほどの要領で次の様に設定します。
最後に、しっかり動くかどうか確認してみましょう。
動いていますね
8.ちゃんと できたかな?
はい、これで今回の内容は終わりです。
長い間お疲れ様でした。
本当は短い記事になる予定だったのですが、これも入れたいあれも入れたいでこんな長い記事になってしまいました。
長い間本当にありがとうございました。
次回は17のAzonさんと16のTomZさんの記事みたいです。
多分12時ぐらいに公開になるはずですのでぜひそちらもよろしくお願いします!