2nd week - dsuz/2019-1st-term-unity-game-development GitHub Wiki
今回のテーマ
- 以下のコンポーネントの使い方を学ぶ
- Rididbody
- Collider
- Sprite (Sprite Renderer)
- Physics Material アセットの使い方を学ぶ
- スクリプト コンポーネントの基礎を知る
以上を学ぶことで次のような「ブロック崩しの基本形」を作る。
Sprite を使う
- sprite_ball_wall.unitypackage をダウンロードしてインポートする
- この unitypackage には「丸いもの」の画像と「長方形のもの」の画像が含まれている
- /Assets/Sprites/Balls/BallSprite を Scene ウインドウにドラッグ&ドロップする
- オブジェクトが作られ、オブジェクトには Sprite Renderer が追加されていることを確認すること
- Sprite Renderer の設定を変えて、変化を確認する
- Sprite を他の Sprite に変える
- Color を変える
- Flip のチェックを入れたり外したりする
- /Assets/Sprites/Walls/PlankSprite をボールの下に配置する
- 適当に Sprite Renderer の設定を変えてもよい
- シーンを実行しても何も起きないことを確認する
Rigidbody と Collider を使う
- Ball のオブジェクトに Rigidbody 2D コンポーネントを追加 (Add Component) する
- シーンを実行して何が起きるかを確認する
- Plank のオブジェクトに Box Collider 2D コンポーネントを追加する
- Scene ウィンドウで当たり判定の大きさを確認する
- シーンを実行して何が起きるかを確認する
- Ball のオブジェクトに Circle Collider 2D コンポーネントを追加する
- Scene ウィンドウで当たり判定の大きさを確認する
- 当たり判定が大きすぎる場合は、Circle Collider 2D のパラメータ Radius を調整する
- シーンを実行して何が起きるかを確認する
- Ball や Plank を増やしたり、傾けたりして挙動を確認する
例
Physics Material を使う
- Project ウインドウを操作して、Physics Material 2D アセットを新たに作る
- 名前を Bouncy に変える
- Project ウィンドウ内で、いま作ったアセットを選択し、Inspector ウィンドウで次のように設定を変える
- Friction: 0 (摩擦係数)
- Bounciness: 1 (反発係数)
- Hierarchy ウィンドウから Ball のオブジェクトを選び、Rigidbody 2D または Circle Collider 2D コンポーネントの Material に、Bouncy アセットを設定(アサイン)する
- シーンを実行して挙動を確認する
- Friction, Bounciness の値を変えて、どのように挙動が変わるのかを確認する
問題
ボールが回転しないようにするには、Physics Material 2D のどのパラメーターをいくつに設定すればよいか?
コンポーネントの解説
Rigidbody 2D, Circle Collider 2D, Box Collider 2D コンポーネントの設定値(パラメーター)について説明する
公式リファレンス
ブロック崩しの基本を作る
ブロック崩しの基本形として、以下を作る。
- 上左右を囲む壁
- キー操作で左右に動くパドル
- ボールが動く
壁を作る
以下のように Sprite を並べ、Collider を設定する。Collider の形に注意すること。
パドルを作る
- scripts_ball_paddle.unitypackage をダウンロードしてプロジェクトにインポートする
- このパッケージにはパドルとボールを制御するスクリプトが入っている
- パドルとなるオブジェクトに以下の変更を加える
- Rididbody 2D コンポーネントを追加し、以下のパラメータを変更する
- Gravity Scale を 0 にする
- Freeze Position の Y をチェックする
- Freeze Rotation のチェックを入れる
- PaddleController コンポーネントを追加する
- Rididbody 2D コンポーネントを追加し、以下のパラメータを変更する
- 実行して挙動を確認する
ボールを作る
- ボールとなるオブジェクトに以下の変更を加える
- Rididbody 2D コンポーネントの Gravity Scale を 0 にする
- BallController コンポーネントを追加する
- 実行して挙動を確認する
スクリプトの解説
PaddleController, BallController の内容を解説する
公式リファレンス
公式以外を見たほうがよいもの
まとめ
- Sprite Renderer コンポーネントの機能、パラメーターの意味
- Rigidbody 2D, Box Collider 2D, Circle Collider 2D コンポーネントの機能、パラメーターの意味
- スクリプトからコンポーネントを操作する (GetComponent 等)
- スクリプトで入力を受け付ける (Input)