質問: pos; } } ``` ### 該当のソースコード ``` ソースコード ``` ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: 私はその本を持っていないという前提で回答します。ざっくりとした概要だけの解説です。 `Transform tr = this.GetComponent();`は `型 変数名 = インスタンス.メゾット名<型>();`が正解です。 参考書の他に、公式リファレンスも利用しましょう。例えば以下は`Transform`のページです。 UnityEngine.Transform - Unity スクリプトリファレンス ここを見ると、Transformとは(あなたが知らないだけで)Unityで用意されている「オブジェクトの位置、回転、スケールを扱うクラス」だと分かります。 更にこのクラスはワールド座標位置である`position`という変数などを持っていることも分かります。 同様に`GetComponent`のページも見てみましょう。 Component-GetComponent - Unity スクリプトリファレンス ここを見ると、「ゲームオブジェクトに type がアタッチされている場合は type のタイプを使用してコンポーネントを返します。ない場合は null です」と書かれているので、そういうメソッドなのだと分かります。 更に`public T GetComponent ();`と「ジェネリック版。詳細については Generic Functions を参照してください。」という説明があります。このリンク先を見ると、``←この書き方について説明があります。 これを踏まえると、`Transform tr = this.GetComponent();`は **「自分のGameObjectに付いているTransformコンポーネントを取得して、Transform型の変数trに代入するよ」** という意味になります。 (同じ要領で他のクラス(`Vector3`や`Random`)やメソッド(`Range`)も調べると理解が進むかと思います) 何故そんなことをするかというと、Transformクラスは前述の通りオブジェクトの位置などを司っている為、**その位置を書き換えるとオブジェクトが移動**します。 とりあえず試しにオブジェクトを動かしてみようか、ということですね。 つまり例示のコードはこういう意味になります。 1行目:Transformを取得 2行目:変数Posに自身のオブジェクトの現在地を代入 3行目:Posのx値に、-2〜2までのランダムな値を代入 4行目:Posのy値に、-2〜2までのランダムな値を代入 5行目:自身のオブジェクトの位置をPosにする(つまりPosの位置に移動する) このコードでも(大分奇天烈な動きになるとは思いますが恐らくは)正常に動作します。 ちなみに`this`は「自分自身のインスタンス(tesu)」を指します。大抵省略可能です。 インスタンスとは何かというのは話が長くなるので別途調べてください。 もし今の参考書を全部学んでまだ分からないことがあると思ったら別の資料を調べてみてください。 本当に今まで何のプログラムも書いたことが無いというレベルなら下記ページがオススメです。 UnityでC#プログラミングの基礎を学習する - Qiita (若干情報古いですが基本は変わらないと思います)