000000 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

風来の森いろいろ日記

風来の森いろいろ日記

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X
Jun 16, 2018
XML
テーマ:徒然日記(23573)
カテゴリ:ゲーム制作関連
今日は土曜日。雨で釣りに行けなかったので、昼間からゲームを作ることに。
でも昨日の仕事でまた頚椎を痛めてしまったようだ。
こうなると俄然仕事を辞めたくなる。ものすごく痛い。寒さのせいもあるのかも。

さて、今日はお酒カードを画面上でクリックしたら、そのカードをちゃんと取得できるのかという部分に挑戦した。
まずUnityは3D空間なので、2Dの座標処理をさせようとすると一工夫いるみたい。
いろいろ探した結果、一番楽そうなのを選んだ。

その前にお酒カードをプレハブ化して、それぞれに「酔う値」を設定した。
ついでに名前も設定しておく。(いらないけど)スクリプト名はCardとする。
public int cardAlc; //どれだけ酔うか
public int cardName;  //名前
水や特殊カードは0を設定。あとはカードの数字の通り。
これで、外部からお酒の酔う値を取得できる。
そうだ、忘れてはいけないのが、カードにコライダーを設定しておくこと。
ここでは、BoxCollider2Dを使った。

さて、ここからが本番。
MainCameraでもいいし、空のオブジェクトでもいいので、新たにスクリプトを追加する。
今回はプレイヤーという空のオブジェクトを作って、Playerというスクリプト名で以下を追加した。
 void Update () {
        if (Input.GetMouseButtonUp(0))//ここではマウスが離れた瞬間を取得
        {
            Vector3 aTapPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            Collider2D aCollider2d = Physics2D.OverlapPoint(aTapPoint);
            if (aCollider2d)
            {
                GameObject obj = aCollider2d.transform.gameObject;
                //以下は取得した内容を表示
      Debug.Log(obj.name);
                Card cd = obj.GetComponent<Card>();
                Debug.Log(㏅.name + ":" + cd.cardAlc);
            }
        }
   }

これだけ。
Vector3 aTapPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);
ここで3D空間の座標を変換するのかな?
今回はスマホ向けに作るので、(そもそもマウス処理でいいのか知らないけど)クリックした瞬間ではなく、離れた瞬間に処理をさせることにした。
なぜかというと、画面が小さくて押し間違えがありそうなんで、カード外に指を持って行ってから離せば、カード選択処理が回避されるんじゃないかと思ってのこと。タイミングが遅れるから、もしかしたら直すかもしれないけど。

プレハブ化したカードから一枚適当なお酒カードを選び画面に配置する。
ここではウィスキーカードを配置した。
カードのスクリプト名<Card>には、カードの名前としてWhisky、酔う値として20を設定。
そして実行し、カードをクリックしてみる。

まずはオブジェクト名を取得した。
ついで、オブジェクトに設定されている名前「Whisky」と「20」という値も取得できた。
これで一歩前進した。

マウス処理ができるということは、ノベルゲームも作れそうだな~。
画面をクリックしての脱出ゲームとか・・・。
次はホラーものの脱出ゲームでも作ろうかしらね。










お気に入りの記事を「いいね!」で応援しよう

Last updated  Jun 16, 2018 03:54:40 PM
コメント(0) | コメントを書く
[ゲーム制作関連] カテゴリの最新記事



© Rakuten Group, Inc.
X