2015年1月22日木曜日

初めてUnityをいじってみた。チュートリアルのブロック崩し編 第2回

前回はボールを動かすところまでやりました。
このままですとボールが壁に当たってそのまま転がって右上で止まってしまいます。
なのでバウンドするようにしていきます。
Project→Create→Physic Materialで新しい命令を追加します。名前は自分でわかりやすい名前をつけるといいです。
Dynamic Friction、Static Frictionは摩擦なので0に設定します。
Bouncinessを1に設定します。0が跳ね返り0で最大が1です。
Friction Combine Modeは摩擦なのでMinに設定します。
Bounce Combineは跳ね返し度合いなのでMaxに設定します。
※今回は摩擦の考慮が必要ないのでこのような設定になります。

これだけだと跳ね返りの設定だけで何に対してなのかを設定します。
先ほど作ったボールを選択します。InspectorのColliderのMaterialに設定します。
None (Physic Material)ってボックスにドラッグドロップでもいいし、その横にある○みたいなアイコンを
クリックして選択でもOKです。これで跳ね返りの設定は完了です。
ラケットを操作可能にしていきます。
Project→Create→C#で新しい命令を追加します。名前は自分でわかりやすい名前をつけるといいです。
private float speed = 10.0;
// Use this for initialization

private void Update () {
 rigidbody.AddForce(
  transform.right * Input.GetAxisRaw( "Horizontal" ) * accel,
  ForceMode.Impulse
 ); 
}
と記述します。ここではStartではなくUpdate()に記述します。
Input自体はUnityでやってくれます。
Edit→Project Settings→Inputで確認出来ます。

ブロックを配置します。配置はいままでと同じようにします。
そして、ボールがあたった時に破壊される設定をします。
// 他オブジェクトと衝突した瞬間に呼ばれるメソッド
private void OnCollisionEnter(Collision collision) {
 Destroy(gameObject);
}
と記述しブロックにスクリプトを追加します。

ボールが下の壁にあたったら消えるようにします。
// 他オブジェクトと衝突した瞬間に呼ばれるメソッド
private void OnCollisionEnter(Collision collision) {
 Destroy(collision.gameObject);
}
これを下の壁にスクリプトを追加します。
さっきのとの違いは自身を消すのではなく、当たってきた物を消してます。
これで、最小限の物が出来ました。
次回は、ボールが徐々に早くなるってルールを入れたいです。

0 件のコメント:

コメントを投稿