Unity5でボールの跳ね返り!
先日、Unity 5がリリースされましたね!
私も2年前にプロコンの時にお世話になりました。そのせいで、しばらくUnity拒絶症にかかって、触っていなかったのですがせっかくのリリース。
流行に乗ろうではないか!!
Unityの機能を久しぶりに見ると、効果音・BGM編集用のミキサーがついてたり
Unity - Upgrading Unity 4 Audio Part 1: Mixers and Effects
64bitに対応したりといろいろ新機能が増えていました。まだUnityをフルで活用できないけど、いつかはストアにリリースしたいですね。
ってことで早速インストールしましょ。
無料のPersonal版を選択。なんか製品発表の時にスプラッシュ画面をつけてて、前年度の収入が何$以下なら無料版の機能制限が撤廃して使えるみたいな話し聞きましたけど、よく分かってないです。
さくさくっとインストールしたら起動しましょ。
おーなんか、前よりかっこよくなってる。右上のNew Projectを選択
適当にプロジェクト名を「BouncingBall」にしてCreate project。
起動画面。画面の構成自体は前と変わっていないようです。
Unity入門(2)- Unityの画面構成 | Developers.IO
今回の目標は、ボールを上から床に向けて自然落下させて遊んでみることなので、まずはゲームオブジェクトのボールと床を作ります。
・床の作成
左上のメニューからGameObject->3D Object->Cubeを選択。
するとこんな感じに立方体が作成されます。
今回は床にしたいってことで、赤枠にあるTransformでScaleをいじります。
x = 20,y = 0.2,z = 1にするといい具合の床が完成。Positionも分かりやすいようにx = y = z = 0にしました。
・ボールの作成
GameObject->3D Object->Sphereを選択。すると床同様にシーン画面に球体が表示されます。Potisionをx = 0,y = 10,z = 0にします。
ボールを落とした時にz軸が床と合っていないと、そのままスルーしちゃいますので気をつけて。
・カメラの調整
ではでは、早速実行してみましょう。シーン画面の上にあるプレーボタンをクリック。
あれ?ボールはどこ????
実際ボールは存在していますが、たまたまカメラに見えていないだけです。なので、実際のプレイ画面のシーンを見るにはカメラの位置をいじってあげないといけません。
プレーボタンを再度押して編集に戻して、シーン画面にあるカメラっぽいオブジェクトをクリックしてください。
すると左下にCamera Previewが表示されます。これが実際にカメラが見ている風景なので全体像が見えるようにPositionを調整します。
今回だとx = 0,y = 5,z = -10ぐらいですかね。再度プレーボタンを押すと。
うん!いい感じになりました。
・ボールを落下させる
さて、このままではボールは落ちてきません。オブジェクトを配置しただけではただの置物なので、落下させるにはボールに物理シミュレーションを適用させなければいけません。そこでUnityには、Rigidbodyっというのがあります。
これを追加するだけで、なんと自動的に物理運動の制御をやってくれます!!
しかも空気抵抗やトルクによる空気抵抗、質量により変化もパラメータをいじるだけでおまかせ。
シーン画面でボールを選択して、左側のInspector画面下にあるAdd ComponentからPhysics->Rigidbodyを選択。
各パラメータの説明をすると
Mass:オブジェクトの質量
Drag:オブジェクトが受ける空気抵抗
Angular Drag:回転により受ける空気抵抗
Use Gravity:重力を適用させるか
Is kinematic:物理シミュレーションは適用されないが、スクリプト制御のみで動くことができる
Interpolate:フレームの補完などの設定
Collosion Detection:高速に動くオブジェクトですり抜け防止を行う
今回は重力さえあればいいので、Use Gravityにチェックをいれるだけでいいです。プレーにしてちゃんと落ちるか確かめましょう。
落ちたな(確信)
・ボールに跳ね返りをつける
ボールも無事落下したので、今度は跳ね返りをつけます。
Unityには、先ほどあったRigidbody以外にも様々な物理シミュレーション用の項目があります。
メニューからAssets->Create->Physic Matrialを選択。
これは物理特性マテリアルと言われており、摩擦や跳ね返り係数の調整ができます
各パラメーターの説明めんどいんで、上記の公式マニュアルを読んでくださいw
跳ね返り係数をいじるのでInspector画面にあるBouncinessをいじります。
デフォルトだと跳ね返り係数が0なので全く跳ね返りませんよね。
ころんさん!跳ね返り係数分かりません!って方はこちらへ↓
だいたい0.99ぐらいにするといい具合に反発してくれます。いろいろいじってみると面白いですよ。
数値の設定をしたらAssetsフォルダにある物理特性マテリアルをドラッグ&ドロップでCubeに適用させます。CubeのInspectorのBox Colider->Materialからも設定できます。
適用し、プレーを押すとボールが跳ね返ってくれるのが確認できると思います!
・まとめ
今回は、ボールに物理シミュレーションを適用させて簡単な跳ね返りシミュレーターを作りました。まだまだUnityには面白い機能が盛りだくさんなので、今後も自分のプロジェクトを進めながらまとめて行こうと思います。
これからも進化し続けるUnityに期待しましょう!!