質問編集履歴

1 誤字修正

game_five

game_five score 17

2019/03/20 12:22  投稿

Vetor3.Normalizeメソッドは、拡張メソッドですか?
Vector3.Normalizeメソッドは、拡張メソッドですか?
###疑問点
①疑問
今学んでいるテキストのコードで、
「Vector3のインスタンス.Normalize();」
とありました。
Vector3.Normalizeメソッドについて調べると
[Vector3.Normalizeメソッドの公式リンク](https://docs.unity3d.com/ja/current/ScriptReference/Vector3.Normalize.html)
Vector3.Normalizeメソッドはスタティックメソッドなので、
インスタンス名.Normalize()という使い方はできないはずですが、
「Vector3のインスタンス.Normalize();」とできるのは
Nomalizeメソッドが拡張メソッドだからでしょうか?
②疑問
Normalizeメソッドが拡張メソッドだとすると、
Normalizeメソッドの第一引数にthisキーワードをつけて定義するはずですが
それが公式リンクにはありません。
これは省略しているということでしょうか?
またどうやって拡張メソッドかどうか見分けることができるのでしょうか?
③疑問
Vector3.Normalizeに関係ないのですが、
今学んでいるテキストでは、プレイヤーのポジションを得るときに、
プレイヤー.transform.localPosition としています。
プレイヤーはどのオブジェクトとも親子関係になっていません。
親子関係なしのときは、localPositionとpositionは同じ意味になりますか?
なぜプレイヤー.transform.positionではないのでしょうか?
今までNormalize関数について意識せずにつかっていたのですが、
公式リンクを見ると、staticメソッドなのに気づいて使い方があっているかわからなくなったので質問しました。
ご回答宜しくお願いいたします。
```
### 該当のソースコード C#
playerPos はプレイヤーのtransform.localPositionです。
Enemyスクリプトの一部↓
 var direction = playerPos - transform.localPosition;
 direction.Normalize();
 transform.localPosition += direction * m_speed;
```
  • C#

    16159 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    11873 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity3D

    3844 questions

    Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

  • Unity2D

    2826 questions

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る