そういうのがいいブログ

アプリ個人開発 まるブログ

アプリ開発覚え書き

Unity ゲーム 作り方 プログラム無しで飛んできたボールを打ち返すゲームを作る方法

要件

Unityバージョン2021.3.18f1

はじめに

Utnityの操作に慣れるためにプログラムは無しで簡単なゲームを作成します。

UnityHubがインストール済みの前提で進めます。

どんなゲーム?

シンプルにボールを飛ばしてバットで打ち返すゲームです。

作成手順

作成手順は大きく3ステップになります。
1.プロジェクトの新規作成
2.ボールの設定
3.バットの設定

1.プロジェクトの新規作成

UnityHubを起動し、3Dプロジェクトを作成します。

UnityHub
→「プロジェクト」
→「新しいプロジェクト」


→「すべてのテンプレート」
→「3D(コア)」を選択
→プロジェクト名を入力します。
 好きな名前で良いです。今回は「SimpleBaseball」とします。
→「プロジェクトを作成」


プロジェクトが作成されました。


2.ボールの設定

ボールを生成し、位置の変更、力を与える設定を行います。

ボールの生成

ヒエラルキーウインドウ
→「+」ボタン
→「3Dオブジェクト」
→「スフィア」

球状のオブジェクトが生成されます。
生成直後は名前の編集モードとなりますのでBallと名前を付けます。



位置の設定

ボールの位置を変更します。

Ballをクリックすると画面右側のインスペクター欄にBallの情報が表示されます。

Ballの位置は表示された情報のうち、
「位置」の数値によって変更することができます。
今回は、Z軸を「20」と設定して進めます。



物理特性の追加

Ballへ物理特性を追加します。

現在は、球状の物体が表示されているのみの状態です。
物体同士が衝突したり、物体に力を与えるためには物理特性を与える必要があります。

物理特性は、Unityが用意しているコンポーネント「Rigidbody」を付加することで
簡単に実装することが可能です。

コンポーネントは、Ballオブジェクトをクリックし、
インスペクター下部の「コンポーネントを追加」をクリックすることで追加します。


ではこちらをクリックして「Rigidbody」コンポーネントを付加します。
コンポーネントを追加」クリックすると検索窓が表示されますので
Rigidbodyの頭の文字「rig」を打ち、Rigidbodyを表示します。

検索結果に「Rigidbody」と「Rigidbody 2D」、「Event Trigger」が表示されます。

「Rigidbody」と「Rigidbody 2D」が存在し困惑するかもしれませんが、
3Dプロジェクトにおいては2D表記のない「Rigidbody」を使用します。
(「Rigidbody 2D」は2Dプロジェクトで使用するものになります。)


「Rigidbody」をクリックするとBallのインスペクターは次のようになり、
「Rigidbody」が追加されていることが確認できます。


物理特性 設定の変更

今回、ボールへ重力はかけないため「Rigidbody」の重力設定を無効化します。
設定は簡単で「重力を使用」のチェックボックスを外すだけです。



力を付与

Ballを飛ばしたいので力を付与します。

Unityが一定の力をかけるコンポーネント「Constant Force」を
用意してくれていますのでこちらを使用します。

先ほどのRigidbody付加した要領で「Constant Force」コンポーネントを追加します。

Forceの数値を変更することで軸方向に力を与えることができます。
今回は「Force」のZ軸を「-5」にします。

この段階で画面上部中央の再生ボタンを押すと、ボールが動くはずです。

以上でボールの作成、設定は終了です。

3.バットの設定

ボールを打ち返すバットを作成します。
バットは立方体を生成し、形状変更、回転の設定、力を与える設定を行います。

バットの生成

ヒエラルキーウインドウ
→「+」ボタン
→「3Dオブジェクト」
→「キューブ」

立方体のオブジェクトが生成されます。
生成直後は名前の編集モードとなりますのでBatと名前を付けます。


形状の変更

細長い棒にしたいためスケールを変更します。

Batを選択し、スケールのX軸を「6」に変更します。



位置の変更

ボールの進行方向にBatを配置したいため位置を変更します。

今回位置はX軸「-2」、Z軸「-5」に設定し進めます。


角度の変更

バットを振りかぶるような構図にしたいため角度を変更します。

角度も位置と同じようにBatの「Transform」コンポーネントの設定を変更します。

角度設定:Y軸「50」、Z軸「-10」
※Y軸のみでも問題ありませんが、
 斜め上に飛ぶようにしたかったため、Z軸を少し変更しています。


物理特性の付与

Ballと同じくBatにも物理特性を与えましょう。
Batに「Rigidbody」コンポーネントを追加します。



物理特性 設定の変更

今回、Batへ重力はかけないため「Rigidbody」の重力設定を無効化します。
「重力を使用」のチェックボックスを外してください。


回転軸の設定

バットを振り回すように一端を支点にして回転をさせたいため 機能を追加します。

「Hinge Joint」コンポーネントを追加

「Hinge Joint」コンポーネントは、
ドアやピンボールゲームの打ち返す部分といったような
オブジェクトの指定した部分を固定したい時に使用するコンポーネントです。

詳細については公式の説明書をご確認ください。

docs.unity3d.com

設定値としては、以下のように設定します。
Anchor: X「-0.5」、Y「0」 、Z「0」
軸: X「0」 、Y「-1」、Z「0」



力を付与

Ballと同様に「Constant Force」コンポーネントを追加します。


Force Z軸方向「900」を設定

以上でバットの設置は完了です。
実行すると一端を支点にバットを振ったような動きをするはずです。



4.実行確認

ゲームを開始してボールを打ち返してみましょう。

前準備

表示画面をゲームビューに変更します。
奥側にボールが見え、手前にバットが配置されているはずです。

この状態で開始ボタンを押すとバットを開始早々振ってしまいます。
そのため、開始前はBatオブジェクトの「Constant Force」コンポーネント
チェックボックスを外します。

こうすることで、コンポーネントの機能がオフになり力が かからないようになります。


実行

再生ボタンを押し、任意のタイミングで
Batオブジェクトの「Constant Force」コンポーネント
チェックボックスを有効にすることでバットを振ることができます。

おわりに

プログラム無しということで無理やりゲームにした感がありますが、
Unityの機能を使うだけでも色々できることを
つかんでいただけたのではないでしょうか。

ひとつでも得るものがありましたら幸いです。

書籍紹介

プログラムを基礎から学びたい方向けへ書籍を出版しております。

marumaro7.hatenablog.com

講座紹介

アプリ開発のノウハウを知りたい方向けです。

marumaro7.hatenablog.com