現在制作中のルーレットアプリですが、徐々にゲームっぽくなってきました。
今回は、スクリプトを使ってルーレットが回転する動きを再現してみたいと思います。
久々にスクリプトを作成するので、ちゃんと動作してくれるか緊張するな~。
ルーレットアプリのスクリプト作り
まずは、スクリプトの新規作成から始めます。
プロジェクトウィンドウ内で右クリックして「Create」から「C# Script」をクリック。ファイル名は分かりやすく「Roulettegame」にしました。
★併せて読みたい記事
ルーレットはどういう動きをするのか考える
ルーレットがどういう動きをするのかによって、スクリプトの中身が変わってきますよね。
②徐々に減速して止まる
ルーレットが回転するスクリプト
先ほど新規で作っておいた「Roulettegame」を開いてVisual Studioを起動します。
これが思った以上に重たくて、しばらく応答なし状態になりました。私のパソコンがもう少しハイスペックだったらな~と思う今日この頃。
何とかスクリプトが作成できる状態になったところで、さっそくプログラムを組みます。
リファレンスも参考にしてこんな感じになりました。どういう流れか解説していきます。
まずは、回転速度の変数として「totationspeed」を宣言しました。この値を変えることで回転速度が変化してくれるはず。最初から回転していると困るので、0で初期化しておきます。
ルーレットを徐々に回転させるために、Rotateメソッドを作成。たまにバグが発生する可能性があるようですが、そういった場合はRigidbodyを使用してみます。
ただ、Rigidbodyだと同じ速度で回転し続けるようなので相性が悪い気がする。
一方Rotateだと与えた値分回転してくれるので、ルーレット向きだと感じます。
ですから、21行目でRotateメソッドを使ってX、Y、Z方向に引数を渡します。
XとYは回転には無関係なので0を指定し、Zにはテスト値として「30」にしました。フレーム毎に回転するので結構高速回転するかも?
どのタイミングで回転するかというと、マウスをクリックした時に「30」が代入されて回転するようになります。
この動作を実現するために、「Input.GetMouseButtonDown」メソッドを利用します。
具体的には、左クリックされた瞬間に一度「true」を返すようになります。引数0は左クリックに対応しているので、左クリックすることで回転し始めます。
・クリックして回転させるために、初期の回転速度の値は「0」にしておく。
スクリプトをアタッチして動作確認をする
作成したスクリプト通りに動かすためにアタッチします。
アタッチは、スクリプトの動きをルーレットに紐づけする作業のことですね。ルーレットにアタッチすることで、先ほど作成したスクリプトの動きを実現します。
Visual Studioでの作業を保存して、作成したスクリプトをルーレットオブジェクトにドラッグ&ドロップします。アタッチはマウスだけですぐに出来るので簡単です。
さっそく動作確認するために実行してみます。
動画がないので伝わりにくいですが、かなり高速回転で左にぐるぐると回転しました。逆回転させたい場合は、回転速度の値をマイナスにすれば良さそうです。
①準備した素材をシーンビューに配置する。
②素材がどういった動作をするのか考えてスクリプトを作る。
③スクリプトをアタッチしてゲームを実行して動きを確かめる。
ルーレットが止まるようにする
回転することを確認できたので、次にルーレットが徐々に減速して最終的に止まるようにスクリプトを修正していきます。ずっと回転してるのを見てたら目が回っちゃいますしね。
修正といってもたった一行付け加えるだけで良いんです。
上の画像のように回転速度に0.98を掛けました。
一度だけではなく毎フレームごとに0.98が掛けられるので、徐々に回転速度の値が小さくなっていきます。その結果、最終的に限りなく0に近い値になるのでルーレットが停止するようになります。
掛け合わせる数字は、人それぞれだと思いますが私は0.98にしました。最初は0.9ぐらいで実行してみたんですけど、すぐにルーレットが止まってしまいゲームっぽくなかったんですよね。
その後微調整しながら0.98にすると、ルーレットが回転し始めて停止するまで約6秒かかるのでとてもルーレットらしくなりました。
この辺は個人の感覚になるでしょうけど、長すぎても短すぎても良くないので数字を変えながらゲームを実行してみて絶妙のタイミングを見極めることでしょうね。
段々とルーレットっぽくなってきました。次くらいで完成させたいな~。