Unityを使ったシンプルなゲームとして、ルーレットを作って見ましょう。第1回ではルーレットをとりあえず準備して回してみたいと思います。
プロジェクトの準備
まずはプロジェクトの準備。アセット・・・という程のものではないですが、ルーレットの画像もあるので合わせてゲットしてください。
Unityプロジェクト作成
今回は2Dのゲームなので、テンプレートは2Dのものを選択してください。以下は私の環境。バージョンやURPなどの依存度は低いので完全に一致しなくても製作に支障は少ないと思います。
- Unity 2022.3.25f1
- テンプレート:Universal 2D
アセットの入手
今回利用するルーレットの画像データを下記リンクからダウンロードしてください。
ダウンロードファイル自体はunitypackageというファイルになっています。画像一枚だけではありますが、Unityのデータインポートの形式に慣れましょう!
ルーレット画像データ
ダウンロードしたファイルはUnityプロジェクトの「Assets>Import Packages>Custom Packages」から選択をしてインポートしてください。Assetsフォルダの下にImagesフォルダが作成、中に4色のルーレット画像が見つかれば成功です!
ルーレットを(とりあえず)回そう
まずはルーレットを回してみたいと思います。細かいオペレーションはそっからよ!
ルーレットをゲーム内に配置
まずは画面中央にルーレットを配置しましょう。結構よく使うTransformのリセットを使って位置を合わせますよ。
- 画像をシーンビューにセット
- Images/roulette_04をドラッグアンドドロップでシーンビューに配置
- この時点で場所はどこでもOK
- ルーレット画像のインスペクターを表示
- ヒエラルキーのroulette_04を選択
- インスペクタービューにroulette_04が表示されているのを確認
- ルーレットの位置と大きさ調整
- Transformのリセット
- インスペクターのTransformの帯を右クリック
- コンテキストメニューからResetを選択
- その後、画面の大きさに合うようにScaleを調整(ビューの大きさによって変わるのでお好みで!)
- Transformのリセット
回転するスクリプトを作成
ここではただ回転するだけのスクリプトを作成します。
- プロジェクトビューで右クリック>Create>C# Script
- ファイル名:RouletteBoard
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RouletteBoard : MonoBehaviour
{
public float currentSpeed = 100.0f;
private void Update()
{
float updateRotationSpeed = currentSpeed * Time.deltaTime;
transform.Rotate(0, 0, updateRotationSpeed);
}
}
- Time.deltaTimeを使うことでフレームレートに依存しない回転が出来ます
- transform.Rotateは現在の状態からどれだけ回転するかを指定できる
- 360で1回転
スクリプトを利用してルーレットを回転させましょう
スクリプトファイルはルーレットのインスペクターにアタッチ(AddComponent)することで利用できます。
- roulette_04のインスペクターを表示
- スクリプト:RouletteBoardをアタッチ。以下の方法からいずれかの手段でセットしてください。
- プロジェクトビューのスクリプトファイルをドラッグアンドドロップでroulette_04のインスペクターにセット
- Add ComponentボタンからRouletteBoardスクリプトを選択
ゲームを動かしてルーレットを回転させよう
あとはゲームを動かして、ルーレットが回る様子を確認しましょう。
※gif画像の関係で停止してますが、実際には止まらずにぐるぐる回ってくれるはずです。
回ることが確認出来たらインスペクターのRotateSpeedを変更してスピードを変えたりして遊んでみてください。
課題!
1秒で1回転するためにはRotateSpeedはいくつに設定すればいいでしょうか?数字を変えながらプログラムの挙動の理解を深めてみてください!!
次回の内容
次回はスクリプトを利用して、次のような機能を追加します。
- 任意のタイミングで回転開始!
- 今はかってに回るので、左クリックで回転開始
- ルーレットの停止処理
- 回り始めたらブレーキをかけて停止する
- 任意のタイミングで停止開始
こんなことをやってみようと思います!
コメント