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

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

新規登録して質問してみよう
ただいま回答率
85.50%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

1回答

301閲覧

【unity】でどの関数を使えば良いか分からなくて?

YukioMaki

総合スコア21

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2017/09/09 01:11

unityで教育用のゲームを作ろうと思うのですが、上下にアトランダムに出現した箱の数を
数えさせる単純なゲームです。
箱は出現出来ましたが、プレイヤーがゲーム中その数をキーボードで打ち込んでその数をパソコン入力する関数がわかりません。

###該当のソースコード
using UnityEngine;
using System.Collections;

public class Stage : MonoBehaviour {

public GameObject CubePrefab; public GameObject CubePrefab1; public int number1=0; public int number2=0; // Use this for initialization void Start (){ //GameObject[] obj = new GameObject[10]; int no = Random.Range (1, 5); number1=no; for (int i = -5; i < 5-(10-no); i++) Instantiate (CubePrefab, new Vector3 (i*2,0,0), Quaternion.identity); int nu = Random.Range (1, 5); number2=nu; for (int j = -5; j < 5-(10-nu); j++) Instantiate (CubePrefab1, new Vector3 (j*2,4,0), Quaternion.identity); Debug.Log(number1+number2); } // Update is called once per frame void Update () { }

}

###試したこと
このスクリプトで出現した箱の数をプレイヤーがキーボードで答えを打ち込ませたいのですが、
InputFieldのようなシーン上に枠が出てくるものは使いたくないので、キーボードから打ち込んだ数字をパソコン内で判断できるようなものはないでしょうか。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Input.GetKeyDown (KeyCode.Alpha0) で取得可能です。

Unity スクリプトリファレンス:Input.GetKeyDown

投稿2017/09/09 03:35

sakura_hana

総合スコア11425

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YukioMaki

2017/09/10 03:04

sakura_hanaさん回答ありがとうございます。 Input.GetKeyDownはキーボードが押されているか、いないかの判断だけで、例えばプレイヤーが4を打てば4を、5を打てば5をパソコンが判断出来るのですか? そこのところが初心者の私には良く分かっていなくて。
fiveHundred

2017/09/10 03:49

例えば、Input.GetKeyDown(KeyCode.Alpha4)とした場合、キーボードの4が押された場合のみtrueになります。それ以外のキーには反応しません。 ちなみに、テンキーの4の場合は、Input.GetKeyDown(KeyCode.Keypad4)になります。
YukioMaki

2017/09/11 01:13

fiveHundredさんありがとうございます。 押されたキーコードを変数int Answerに入れてSatage class の(number1+number2) と答え合わせをさせようと下記のスクリプト書いてみたのすが、エラーに、解決策教えていただけますか。 if (Input.GetKeyDown (KeyCode.Alpha1)) { int Answer = 1; Debug.Log("Alpha1"); } [変数’Answer'は割り当てられていますが、その値が使用されていません]とメッセージが
fiveHundred

2017/09/11 01:48

> [変数’Answer'は割り当てられていますが、その値が使用されていません] 上記のwarningは、単純にAnswerの中身を見ている箇所がないということです。 Answerは今後、正解or不正解のチェックで使われるはずなので、この場合は無視しても大丈夫です。 (今後使う予定のない変数の場合は、削除したほうがよいでしょう) もし、実行やビルドができない、ということであれば、他のエラーが原因でしょう。 おそらく後述の内容を修正すれば直ると思います。 このソースだと、Answerはそのif文の中でしか使えないため、外で使用したい場合はAnswerをif文の外で定義する必要があります。 これはスコープというものです。詳しいことは調べてほしいですが、とりあえず、「基本的に、変数はそれが定義された{ }の中でのみ使える」と考えれば大丈夫だと思います。
fiveHundred

2017/09/11 01:58

追記ですいませんが、動かない場合は、以下も確認してください。 以下のように、同じ関数内で、同じ名前の変数を定義すると、エラーになることがあります。 int Answer; if (Input.GetKeyDown (KeyCode.Alpha1)) { int Answer = 1; Debug.Log("Alpha1"); } この場合は、以下のようにif文内の定義を、ただの代入とすればよいです。 int Answer; if (Input.GetKeyDown (KeyCode.Alpha1)) { Answer = 1; Debug.Log("Alpha1"); }
YukioMaki

2017/09/11 06:09

fiveHndredさん言われた通りに書き直したら動きました。 また、分からないことが起こったら質問に載せるのでよろしくお願いします。 この場でsakura_hanaさんfiveHndredさん二人にお礼申し上げます。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問