[Unity]ルーレットのスクリプト作りとゲームの実行について

現在制作中のルーレットアプリですが、徐々にゲームっぽくなってきました。

今回は、スクリプトを使ってルーレットが回転する動きを再現してみたいと思います。

久々にスクリプトを作成するので、ちゃんと動作してくれるか緊張するな~。

スポンサーリンク

ルーレットアプリのスクリプト作り

まずは、スクリプトの新規作成から始めます。

プロジェクトウィンドウ内で右クリックして「Create」から「C# Script」をクリック。ファイル名は分かりやすく「Roulettegame」にしました。

 

★併せて読みたい記事

【Udemy】初心者におすすめなUnityのコース7選
前回、Udemyの魅力について紹介しましたが、いざ始めようと思うとどのコースが良いのか分からないと思うので、今回は初心者の方にオススメなUnityのコースを厳選したいと思います。 何しろコースの数が膨大ですからね。選ぶだけで結構な時間...

ルーレットはどういう動きをするのか考える

ルーレットがどういう動きをするのかによって、スクリプトの中身が変わってきますよね。

①スタートボタンをタップしてルーレットが回転する
②徐々に減速して止まる
基本的にこの2点さえ押さえれば成り立つかと思っています。
あとはどれくらいのスピードで回転させるか、何秒後に停止させるのかなど実際にスクリプトを作りながら微調整すればいいですね。

ルーレットが回転するスクリプト

先ほど新規で作っておいた「Roulettegame」を開いてVisual Studioを起動します。

これが思った以上に重たくて、しばらく応答なし状態になりました。私のパソコンがもう少しハイスペックだったらな~と思う今日この頃。

何とかスクリプトが作成できる状態になったところで、さっそくプログラムを組みます。

Visual Studioで作成中のルーレットのスクリプト

リファレンスも参考にしてこんな感じになりました。どういう流れか解説していきます。

まずは、回転速度の変数として「totationspeed」を宣言しました。この値を変えることで回転速度が変化してくれるはず。最初から回転していると困るので、0で初期化しておきます。

ルーレットを徐々に回転させるために、Rotateメソッドを作成。たまにバグが発生する可能性があるようですが、そういった場合はRigidbodyを使用してみます。

ただ、Rigidbodyだと同じ速度で回転し続けるようなので相性が悪い気がする。

一方Rotateだと与えた値分回転してくれるので、ルーレット向きだと感じます。

ですから、21行目でRotateメソッドを使ってX、Y、Z方向に引数を渡します。

XとYは回転には無関係なので0を指定し、Zにはテスト値として「30」にしました。フレーム毎に回転するので結構高速回転するかも?

どのタイミングで回転するかというと、マウスをクリックした時に「30」が代入されて回転するようになります。

この動作を実現するために、「Input.GetMouseButtonDown」メソッドを利用します。

具体的には、左クリックされた瞬間に一度「true」を返すようになります。引数0は左クリックに対応しているので、左クリックすることで回転し始めます。

・Rorateメソッドで素材を回転させる事が出来る。
・クリックして回転させるために、初期の回転速度の値は「0」にしておく。

スクリプトをアタッチして動作確認をする

作成したスクリプト通りに動かすためにアタッチします。

アタッチは、スクリプトの動きをルーレットに紐づけする作業のことですね。ルーレットにアタッチすることで、先ほど作成したスクリプトの動きを実現します。

Visual Studioでの作業を保存して、作成したスクリプトをルーレットオブジェクトにドラッグ&ドロップします。アタッチはマウスだけですぐに出来るので簡単です。

さっそく動作確認するために実行してみます。

動画がないので伝わりにくいですが、かなり高速回転で左にぐるぐると回転しました。逆回転させたい場合は、回転速度の値をマイナスにすれば良さそうです。

素材を動かすまでの流れ
①準備した素材をシーンビューに配置する。
②素材がどういった動作をするのか考えてスクリプトを作る。
③スクリプトをアタッチしてゲームを実行して動きを確かめる。

ルーレットが止まるようにする

回転することを確認できたので、次にルーレットが徐々に減速して最終的に止まるようにスクリプトを修正していきます。ずっと回転してるのを見てたら目が回っちゃいますしね。

修正といってもたった一行付け加えるだけで良いんです。

Visual Studioで修正されたルーレットのスクリプト

上の画像のように回転速度に0.98を掛けました。

一度だけではなく毎フレームごとに0.98が掛けられるので、徐々に回転速度の値が小さくなっていきます。その結果、最終的に限りなく0に近い値になるのでルーレットが停止するようになります。

掛け合わせる数字は、人それぞれだと思いますが私は0.98にしました。最初は0.9ぐらいで実行してみたんですけど、すぐにルーレットが止まってしまいゲームっぽくなかったんですよね。

その後微調整しながら0.98にすると、ルーレットが回転し始めて停止するまで約6秒かかるのでとてもルーレットらしくなりました。

この辺は個人の感覚になるでしょうけど、長すぎても短すぎても良くないので数字を変えながらゲームを実行してみて絶妙のタイミングを見極めることでしょうね。

段々とルーレットっぽくなってきました。次くらいで完成させたいな~。