質問: pos; if(Input.GetKey(KeyCode.Space) && pos.x< 100 ) // pos.x += new Vector3(1, 0, 0); print(transform.localPosition.x); } } ``` こちらの、`if(Input.GetKey(KeyCode.Space) && pos.x< 100 )`の部分を「スペースキー入力があり、x<100の条件下にて」という条件式を書いているつもりなのですが、キーの反応が無く、実際は全く動作していません。 可能であれば、スクリプトの解説も交えてご教授願いたいです。よろしくお願いいたします。
回答: `if(Input.GetKey(KeyCode.Space) && pos.x< 100 )` の条件式についてですが、 キー入力を受ける度に、ということなら キーを押下中ずっとtrueを返す`Input.GetKey()`でなく キー押下したフレームでのみtrueを返す`Input.GetKeyDown()`を利用したほうが良いでしょう。 ``` void update () { // int x; transform.localPosition = new Vector3(-11, 0, 0); Vector3 pos = transform.position; ... } ``` まず、update関数の頭文字が小文字になっています。 毎フレーム呼び出されるようにするには`void Update ()`です。 初期化に使うstart関数も中は空ですが、同様に頭文字が小文字になっていますね。 気になった点ですが、毎フレーム呼び出される場合、 `transform.localPosition`が毎フレーム`Vector3 (-11, 0, 0)`で初期化されるのは 動作として意図したものでしょうか? `transform.localPosition`と`transform.position`が混在しているのも気になります。