読者です 読者をやめる 読者になる 読者になる

Unity5でボールの跳ね返り!

Unity

先日、Unity 5がリリースされましたね!

私も2年前にプロコンの時にお世話になりました。そのせいで、しばらくUnity拒絶症にかかって、触っていなかったのですがせっかくのリリース。

流行に乗ろうではないか!!

 

Unityの機能を久しぶりに見ると、効果音・BGM編集用のミキサーがついてたり


Unity - Upgrading Unity 4 Audio Part 1: Mixers and Effects

64bitに対応したりといろいろ新機能が増えていました。まだUnityをフルで活用できないけど、いつかはストアにリリースしたいですね。

 

ってことで早速インストールしましょ。

Unity - Get Unity

無料のPersonal版を選択。なんか製品発表の時にスプラッシュ画面をつけてて、前年度の収入が何$以下なら無料版の機能制限が撤廃して使えるみたいな話し聞きましたけど、よく分かってないです。

さくさくっとインストールしたら起動しましょ。

f:id:Collonville:20150310220602j:plain

 

おーなんか、前よりかっこよくなってる。右上のNew Projectを選択

f:id:Collonville:20150310220812j:plain

 適当にプロジェクト名を「BouncingBall」にしてCreate project。

 

f:id:Collonville:20150310221045j:plain

 起動画面。画面の構成自体は前と変わっていないようです。


Unity入門(2)- Unityの画面構成 | Developers.IO

 

今回の目標は、ボールを上から床に向けて自然落下させて遊んでみることなので、まずはゲームオブジェクトのボールと床を作ります。

 

・床の作成

左上のメニューからGameObject->3D Object->Cubeを選択。

するとこんな感じに立方体が作成されます。

f:id:Collonville:20150310221953j:plain

今回は床にしたいってことで、赤枠にあるTransformでScaleをいじります。

x = 20,y = 0.2,z = 1にするといい具合の床が完成。Positionも分かりやすいようにx = y = z = 0にしました。

f:id:Collonville:20150310222239j:plain

 

 ・ボールの作成

GameObject->3D Object->Sphereを選択。すると床同様にシーン画面に球体が表示されます。Potisionをx = 0,y = 10,z = 0にします。

f:id:Collonville:20150310222831j:plain

ボールを落とした時にz軸が床と合っていないと、そのままスルーしちゃいますので気をつけて。

 

・カメラの調整

ではでは、早速実行してみましょう。シーン画面の上にあるプレーボタンをクリック。

f:id:Collonville:20150310223134j:plain

f:id:Collonville:20150310223226j:plain

あれ?ボールはどこ????

実際ボールは存在していますが、たまたまカメラに見えていないだけです。なので、実際のプレイ画面のシーンを見るにはカメラの位置をいじってあげないといけません。

 

プレーボタンを再度押して編集に戻して、シーン画面にあるカメラっぽいオブジェクトをクリックしてください。

f:id:Collonville:20150310223833j:plain

 すると左下にCamera Previewが表示されます。これが実際にカメラが見ている風景なので全体像が見えるようにPositionを調整します。

f:id:Collonville:20150310223908j:plain

 今回だとx = 0,y = 5,z = -10ぐらいですかね。再度プレーボタンを押すと。

f:id:Collonville:20150310224128j:plain

うん!いい感じになりました。

 

・ボールを落下させる

さて、このままではボールは落ちてきません。オブジェクトを配置しただけではただの置物なので、落下させるにはボールに物理シミュレーションを適用させなければいけません。そこでUnityには、Rigidbodyっというのがあります。


Unity - マニュアル: リジッドボディ

 

これを追加するだけで、なんと自動的に物理運動の制御をやってくれます!!

しかも空気抵抗やトルクによる空気抵抗、質量により変化もパラメータをいじるだけでおまかせ。

 

シーン画面でボールを選択して、左側のInspector画面下にあるAdd ComponentからPhysics->Rigidbodyを選択。

f:id:Collonville:20150310225332j:plain

各パラメータの説明をすると

Mass:オブジェクトの質量

Drag:オブジェクトが受ける空気抵抗

Angular Drag:回転により受ける空気抵抗

Use Gravity:重力を適用させるか

Is kinematic:物理シミュレーションは適用されないが、スクリプト制御のみで動くことができる

Interpolate:フレームの補完などの設定

Collosion Detection:高速に動くオブジェクトですり抜け防止を行う

 

今回は重力さえあればいいので、Use Gravityにチェックをいれるだけでいいです。プレーにしてちゃんと落ちるか確かめましょう。

f:id:Collonville:20150310230145j:plain

 落ちたな(確信)

 

・ボールに跳ね返りをつける

ボールも無事落下したので、今度は跳ね返りをつけます。

Unityには、先ほどあったRigidbody以外にも様々な物理シミュレーション用の項目があります。

メニューからAssets->Create->Physic Matrialを選択。

f:id:Collonville:20150310230713j:plain

これは物理特性マテリアルと言われており、摩擦や跳ね返り係数の調整ができます


Unity - マニュアル: 物理特性マテリアル

 

各パラメーターの説明めんどいんで、上記の公式マニュアルを読んでくださいw

跳ね返り係数をいじるのでInspector画面にあるBouncinessをいじります。

f:id:Collonville:20150310231126j:plain

デフォルトだと跳ね返り係数が0なので全く跳ね返りませんよね。

 

ころんさん!跳ね返り係数分かりません!って方はこちらへ↓

5.2.3.1 反発係数 ■わかりやすい高校物理の部屋■

 

だいたい0.99ぐらいにするといい具合に反発してくれます。いろいろいじってみると面白いですよ。

f:id:Collonville:20150310231541j:plain

数値の設定をしたらAssetsフォルダにある物理特性マテリアルをドラッグ&ドロップでCubeに適用させます。CubeのInspectorのBox Colider->Materialからも設定できます。

 

適用し、プレーを押すとボールが跳ね返ってくれるのが確認できると思います!

f:id:Collonville:20150310231913j:plain

 

 ・まとめ

今回は、ボールに物理シミュレーションを適用させて簡単な跳ね返りシミュレーターを作りました。まだまだUnityには面白い機能が盛りだくさんなので、今後も自分のプロジェクトを進めながらまとめて行こうと思います。

 

これからも進化し続けるUnityに期待しましょう!!