質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.34%

[C#]Unityでスロットマシンを作りたい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,325

kurosuke___

score 213

Unityは一昨日始めたばかりの初心者です。

スロットマシンを作りたいのですが、いろいろとわからないことが山盛りです。
やはりリールの回転感は出したいので、3Dモデルでドラムを作り、そこにリール用画像をテクスチャとして貼り、それを回すことにしました。
回すのはUpdate関数に以下の処理を書けばよさそうです。

transform.Rotate(new Vector3(0, -9, 0));


ですが、絵柄1枚ごとにちゃんとした位置で止まってくれないと困りますし、4コマ以内の滑り表現や、役がそろった時の処理のために、それぞれの絵柄をEnumかクラスで管理したいのですが、その表現方法がまったくわかりません。

丸1日調べたりいじってみたりしたのですがいい方法が思いつきませんでした。

お聞きしたいのは以下

  • どのタイミングで回転を止めても、ちゃんとマス目?に絵柄が来るようにしたい
  • 絵柄をEnumやクラスなどで管理したい

なにかいい方法がありましたら、回答よろしくお願いいたします。
Unity

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+2

プログラム以前に「設計」を考えた方がいいです。

「したい」を「〇〇という状態になれば正しい」という状態まで落とし込んでください。

どのタイミングで回転を止めても、ちゃんとマス目?に絵柄が来るようにしたい

これはつまり、「最終的に絵柄が正面を向くように止まればよい=各絵柄がリールのどの角度に付いているか求め、リールがその角度になるように回転させ、止めればよい」と言えます。
transform.Rotateは一定値回転させる命令なので「現在の角度と到達すべき角度の差」を求めればそのまま使えますし、「unity 回転」で調べれば「目的の角度まで回転させる」方法も見つけられるでしょう。

実際の滑り等を考えると、具体的には「止めるボタンが押された→その瞬間の自身のリールの角度と他のリールの絵柄から"出すべき絵柄"を内部的に決定する→その絵柄(角度)になるよう回転させる」という実装になるかと思います。

絵柄をEnumやクラスなどで管理したい

「unity enum」「unity 自作クラス」で調べると色々情報が出て来ます。
Unity - 列挙
C#のEnumのtips - いんでぃーづ
Unity 自前のクラスをインスペクタから編集できるようにする | ftvlog

実際に実装するなら、
「絵柄(Sprite)」と「当たった時に貰えるコイン数(int)」を持った自作クラス(Egara)を作成、
配列(Egara[])を作成して利用する、という形でしょうか。(クラス名は適当)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/08/21 12:13

    >「したい」を「〇〇という状態になれば正しい」という状態まで落とし込んでください。
    なるほど、考えをそこまで巡らせれば確かに解決策にたどり着くようですね!
    絵柄に関しての考え方もとても参考になりました。
    こういう考え方はプログラムを組むうえでとても大事ですね。勉強になります。
    また、参考になる文献まで紹介していただきありがとうございます。

    実現したいことがどういう状態にあるかをまず作戦会議で考え抜くようにしてみますね!
    とても勉強になるありがたい回答でした。本当にありがとうございました!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る