質問: Unityは一昨日始めたばかりの初心者です。 スロットマシンを作りたいのですが、いろいろとわからないことが山盛りです。 やはりリールの回転感は出したいので、3Dモデルでドラムを作り、そこにリール用画像をテクスチャとして貼り、それを回すことにしました。 回すのはUpdate関数に以下の処理を書けばよさそうです。 ``` transform.Rotate(new Vector3(0, -9, 0)); ``` ですが、絵柄1枚ごとにちゃんとした位置で止まってくれないと困りますし、4コマ以内の滑り表現や、役がそろった時の処理のために、それぞれの絵柄をEnumかクラスで管理したいのですが、その表現方法がまったくわかりません。 丸1日調べたりいじってみたりしたのですがいい方法が思いつきませんでした。 お聞きしたいのは以下 * どのタイミングで回転を止めても、ちゃんとマス目?に絵柄が来るようにしたい * 絵柄をEnumやクラスなどで管理したい なにかいい方法がありましたら、回答よろしくお願いいたします。 ![Unity](https://teratail.storage.googleapis.com/uploads/contributed_images/26b8bade7fadecc904d8d33f32f32cb2.png)
回答: ### プログラム以前に「設計」を考えた方がいいです。 **「したい」を「〇〇という状態になれば正しい」という状態まで落とし込んでください。** > > どのタイミングで回転を止めても、ちゃんとマス目?に絵柄が来るようにしたい > > > これはつまり、「最終的に絵柄が正面を向くように止まればよい=各絵柄がリールのどの角度に付いているか求め、リールがその角度になるように回転させ、止めればよい」と言えます。 `transform.Rotate`は一定値回転させる命令なので「現在の角度と到達すべき角度の差」を求めればそのまま使えますし、「unity 回転」で調べれば「目的の角度まで回転させる」方法も見つけられるでしょう。 実際の滑り等を考えると、具体的には「止めるボタンが押された→その瞬間の自身のリールの角度と他のリールの絵柄から"出すべき絵柄"を内部的に決定する→その絵柄(角度)になるよう回転させる」という実装になるかと思います。 > > 絵柄をEnumやクラスなどで管理したい > > > 「unity enum」「unity 自作クラス」で調べると色々情報が出て来ます。 Unity - 列挙 C#のEnumのtips - いんでぃーづ Unity 自前のクラスをインスペクタから編集できるようにする | ftvlog 実際に実装するなら、 「絵柄(Sprite)」と「当たった時に貰えるコイン数(int)」を持った自作クラス(Egara)を作成、 配列(Egara[])を作成して利用する、という形でしょうか。(クラス名は適当)