仮面:ダァス!
 秋山:アキヤマでーす。今回もよろしくお願いします~
 仮面:さて、
 秋山:あー、
 仮面:お前の評判じゃない!
 秋山:あー、
 仮面:ふー...そうか……ボチボチか……
はい、
今回は趣向を変えて、
無料Assetでゲームを作ろう!
 秋山:でですね!
 仮面:てこ入れ早ッ!
 秋山:内容をお金がかからない方法でできませんか?
 仮面:無料Assetか……
 秋山:そうです!
 仮面:貴様自分がお金を払いたくないからではないか?
 秋山:そ、
 仮面:まあいい、
 秋山:お願いしまーす!
Asset Storeには無料のAssetも置いてあります。そしてもちろん商用利用が可能です。その中から今回は
Assets/シーンをダブルクリックすると、
レースゲームサンプル「Car Tutorial」 
 仮面:まず、
 秋山:グランツーリスモとか、
 仮面:そこは頭文字Dと言って欲しかったな……。チュートリアルなので、
 秋山:へー、
 仮面:そうだ。だからこれをダウンロードして、
 秋山:まあとりあえず、
(プレイ中)
 仮面:まあ……こんな感じだ。
 秋山:あんまり面白くないですね。
 仮面:うぉい!
 秋山:レースゲームっていうから競走するものと思っていましたよ。
アニメーションシステムの例「Mecanim Example Scenes」 
次に
「Mecanim」
 秋山:これはUnityさんが作ったのですか?
 仮面:そうだ。先ほどの
 秋山:基本無料というとなんかアレですね。
 仮面:アレではない!
 秋山:やっぱりアレじゃないですか。
 仮面:アレじゃない!
フォルダ分けでスッキリ
まずはこの二つのAssetを使って、
二つのAssetをAsset Storeから読み込むと、
そして、
どんなゲームを作る?
 秋山:で、
 仮面:相変わらず何も考えてないな……。
 秋山:なるほど!
 仮面:いやそれだとプレイ中、
 秋山:じゃあ、
 仮面:それ倫理的にどうなんだ?
 秋山:はい!
Assets/シーンを開いてみましょう。
このシーンの中のTeddyBearを使います。TeddyBearをAssets/ドラッグアンドドロップRunningBearにしましょう。
再びAssets/シーンを開いて、Assets/として保存しておきましょう。
クマを動き回らせるには
クマをAIで自由に動いてもらうために、Navigationという機能を使います。Window→Navigationを選択し、Navigationウィンドウを開きます。そして、Mesh Rendererが含むオブジェクトはNavigation Staticをオンに、Road_以下のオブジェクト以外は全てオフでいいでしょう。あとTerrainもオフでいいでしょう。
そしてBakeボタンを押して、
次にクマの動きを改造していきましょう。先ほどPrefabを作ったRunningBearは既にAgent.というスクリプトがついています。これを改造しましょう。まず名前をFollowAgent.に変更、
次にいらない箇所は全てコメントしましょう。particle関連は全て必要ないのでコメントし、
  void OnTriggerStay(Collider other) 
  {
    if ( this.enabled == false ) return;
    Vector3 dir = this.transform.position - other.transform.position;
    Vector3 pos = this.transform.position + dir * 0.5f;
    agent.destination = pos;
  }
やっていることは、
そして次にクマにSphere Colliderコンポーネントを追加しましょう。RunningBearを選択し、Component→Physics→Sphere Colliderを選択してください。そしてIs Triggerフラグをオンに、Radiusは10にしましょう。
最後にクマ同士は反応しないようにしましょう。RunningBearを選択し、LayerのAdd Layerを選択すると、User Layer 8あたりにBearを作りましょう。そして、RunningBearにBearレイヤーを割り当てましょう。
そしてEdit→Project Settings→Physicsを選択し、
それと、RunningBearのInspectorでApplyを押すことで、
 仮面:クマPrefabをたくさん配置すると……
 秋山:わー、
 仮面:そうだ……おい、
 秋山:あ、
 仮面:そうだな。まだそこの処理は作ってないからな。
 秋山:当たったときは、
 仮面:おまっ...なんかゲームの方向性変わってきてないか?
 秋山:いやいや。あくまでも交通安全ゲームです!
車に当たったときの処理
当たったときのクマを表現するにはRagdollを使いましょう。これは人体モデルを重みがある人形のように見せる手法です。Unityでもそれを適応させる方法があります。GameObject→Create Other→Ragdoll...を選択し、
それぞれの部位のColliderを多少調整し、
以上の操作でそれぞれの部位にColliderとRigidbodyが付加されます。そしてこのゲームでは当たった瞬間にRagdollをオンにする、RigidbodyのIs Kinematicのチェックをオンにします。こうすることでアニメーションに干渉することを防ぐというわけです。
あと車との衝突判定としてRunningBearにCapsule Colliderを付加しましょう。RunningBearを選択し、Component→Physics→Capsule Colliderを選択してください。Center Y、
これで準備は整いましたので、
ChangeRagdoll.cs using UnityEngine;
using System.Collections;
public class ChangeRagdoll : MonoBehaviour {
  // ぶつかった際の力の度合い
  public float forceDegree = 1.0f;
  // 当たった際の判定がここに来ます
  void OnCollisionEnter(Collision collision) 
  {
    // ぐったりクマにするために各種コンポーネントのオフ
    GetComponent<Animator>().enabled = false;
    GetComponent<NavMeshAgent>().enabled = false;
    GetComponent<FollowAgent>().enabled = false;
    GetComponent<CapsuleCollider>().enabled = false;
    GetComponent<SphereCollider>().enabled = false;
    
    // 衝突の力を計算。ちょっと上方に飛ばす処理
    Vector3 vec = collision.impactForceSum;
    float mag = vec.magnitude;
    vec.Normalize();
    vec.y += 0.5f;
    vec.Normalize();
    vec *= mag;
    
    // Kinematicをオンにして、力を加える
    Rigidbody [] ragdollRB = this.gameObject.GetComponentsInChildren<Rigidbody>();
    foreach( Rigidbody rb in ragdollRB ) {
      rb.isKinematic = false;
      rb.AddForce( vec * forceDegree, ForceMode.Impulse );
    }
    // この判定も以後は使わないので、オフに
    this.enabled = false;
  }
}
 仮面:おい
 秋山:はい?
 仮面:これは、
 秋山:ヒドいことになってますね
 仮面:お前が派手にとか言うからだろ!
 秋山:まあヒドいことにならないように、
 仮面:いいのか?
 秋山:それより、
 仮面:それなら簡単だ。RunningBearをコピペすれば増殖できるぞ
 秋山:わ!
 仮面:一応、
完成したゲーム
以下のサイトで完成した交通安全ゲームが遊べます。
また、
まとめ:ゲームを作り始めるには
 仮面:さあ今回どうだった?
 秋山:あー、
 仮面:そうだ。プログラムしている時間はあんまりなかっただろう。
 秋山:そうですね、
 仮面:私が声を大にして言いたいのは (クワ!)
 秋山:か、
 仮面:イチから全て作るのは大変だ。だから最初は完成品、
 秋山:それでいいんですか?
 仮面:確かにパクリだ!
 秋山:えええ!
 仮面:パクリだが、
 秋山:言いたい放題ですね。
 仮面:――つまりだな。ゲームを作りたいのだけど、
 秋山:まさに私ですね。
 仮面:それにはまず、
 秋山:はい、
 仮面:じゃあ、
 秋山:なんか最終回みたいな終わり方ですね。
 仮面:お、
 秋山:いや、
 仮面:ぐぬぬ
 秋山:では、
