無料体験
無料体験
サクールでは、実際の教室の雰囲気を体験できる無料体験教室を実施しております。普段からサクールに通っている子どもたちの隣で、簡単なゲーム制作を楽しんでいただけます。仙台市内2つの会場とオンラインで開催。所要時間は1時間程度、手ぶらでOKです。ぜひご本人様・保護者様ご一緒に教室へお越しください。

Unityを使って、3Dのボールを転がすシンプルなゲームを作成してみましょう。
このチュートリアルでは、床の上でボールを転がすシーンを開発します。要件定義は以下のとおりです
このプロジェクトは、Unityの基本的な3D操作や物理演算の仕組みを学ぶための良い機会です。これから、各ステップを解説していきますので、ぜひ挑戦してみてください。
また、前回のブログ👇もよろしければご覧ください!
【Unityはじめのいっぽ】第1回 Unityで3Dのボールを転がすプログラムを作る
ステージ作成(前回の内容です):
ボール操作スクリプト(前回作った方は3のコードの修正から取り組んでください):
using UnityEngine;
public class BallController : MonoBehaviour
{
//速度
public float moveSpeed = 5.0f;
//ジャンプ力
public float jumpForce = 5.0f;
// Rigidbodyコンポーネントを入れる変数
private Rigidbody rb;
void Start()
{
// Rigidbodyコンポーネントを取得
rb = GetComponent<Rigidbody>();
}
void Update()
{
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
// たてとよこのキーボード入力を取得する変数
Vector3 movement = new Vector3(moveHorizontal, 0, moveVertical);
// 入力した分だけRigidbodyに力を加える
rb.AddForce(movement * moveSpeed);
// Spaceキーが押されたら && ジャンプ中じゃなければ(y軸方向の移動がなければ:2段ジャンプさせないため)
if (Input.GetKeyDown(KeyCode.Space) && Mathf.Abs(rb.velocity.y) < 0.001f)
{
//入力した分だけ上方向に力を加える
rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
}
}
}
このコードでは、Start
メソッドでボールのRigidbodyコンポーネントを取得しています。Update
メソッドでは、キーボード入力に応じてボールに力を加えて移動させています。さらに、スペースキーが押されたときにボールがジャンプする機能も実装しています。
なお、Input.GetAxisについても確認しておきましょう。
これで、3Dのボールが床の上を転がり、スペースキーを押すことでジャンプできるようになりました。次に、カメラの設定とボールが床から落ちた場合の処理を実装しましょう。
次に、カメラを固定し、ボールが床から落ちた場合の処理を実装しましょう。
カメラの設定:
シーン内のMain Cameraオブジェクトを選択し、TransformコンポーネントのPositionとRotationを調整して、適切な視点からステージを見下ろすように設定します。
ボールが床から落ちた場合の処理:
「BallController」スクリプトを開き、以下のコードを追加します。
using UnityEngine;
public class BallController : MonoBehaviour
{
// ... 既存のコード ...
// 床から落ちた場合の再スポーン位置
private Vector3 respawnPosition;
void Start()
{
// ... 既存のコード ...
// ボールの初期位置を保存
respawnPosition = transform.position;
}
void Update()
{
// ... 既存のコード ...
// ボールが床から落ちた場合、再スポーン位置に戻す
if (transform.position.y < -10)
{
transform.position = respawnPosition;
rb.velocity = Vector3.zero;
}
}
}
このコードでは、ボールの初期位置をrespawnPosition
変数に保存しておきます。Update
メソッド内で、ボールが床から一定の距離落ちた場合(ここではy座標が-10以下)、ボールを再スポーン位置に戻して、速度をゼロにリセットしています。
これで、カメラが固定され、ボールが床から落ちた場合に上空から再び降りてくる処理が実装されました。プレイヤーはキーボードでボールを操作し、床上で転がすことができます。
これで、3Dボール転がしゲームの基本的な機能が完成しました。
ここからはいろいろな発展ができると思います。
などなど…
リクエストがあればぜひコメントなどでお知らせください。
最後までお読みいただきありがとうございました!
参考:Unity ユーザーマニュアル : Rigidbody
https://docs.unity3d.com/ja/2019.4/Manual/class-Rigidbody.html
サクールでは、実際の教室の雰囲気を体験できる無料体験教室を実施しております。普段からサクールに通っている子どもたちの隣で、簡単なゲーム制作を楽しんでいただけます。仙台市内2つの会場とオンラインで開催。所要時間は1時間程度、手ぶらでOKです。ぜひご本人様・保護者様ご一緒に教室へお越しください。