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

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

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

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

Unity3D

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

Q&A

解決済

2回答

1557閲覧

Unity3d リファレンスを見てもわからないコードの意味が知りたい

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

Unity3D

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

0グッド

0クリップ

投稿2019/04/03 05:51

Vector3.Scale(Camera.main.transform.forward, new Vector3(1, 0, 1)).normalized

1 Camera.main.transform.forwardを公式リファレンスは英語で書かれておりgoogle翻訳にかけましたが意味がわからずtransform.forwardについて知ら
べるとワールドの青軸とあるのですがカメラなのでカメラの青軸つまりZ軸でよろしいのでしょか?いまいちわかりやすい翻訳を得られないので質問しました

2 .normalizedとはリファレンスを見るとmagnitude を 1 としたベクトルを作成しますとありますがmagnitudeを調べるとベクトルの読み取り専用などとありますがベクトルを作るという意味でしょうか?

c#

1public class UnichanController : MonoBehaviour { 2 private Animator anim; 3 private Rigidbody rb; 4 private float moveSpeed = 3.0f; 5 float inputHorizontal; 6 float inputVertical; 7 8 // Use this for initialization 9 void Start () 10 { 11 anim = GetComponent<Animator>(); 12 rb = GetComponent<Rigidbody>(); 13 } 14 15 void FixedUpdate() 16 { 17 // カメラの方向から、X-Z平面の単位ベクトルを取得 18 Vector3 cameraForward = Vector3.Scale(Camera.main.transform.forward, new Vector3(1, 0, 1)).normalized; 19 20 // 方向キーの入力値とカメラの向きから、移動方向を決定 21 Vector3 moveForward = (cameraForward * inputVertical) + (Camera.main.transform.right * inputHorizontal); 22 23 // 移動方向にスピードを掛ける。ジャンプや落下がある場合は、別途Y軸方向の速度ベクトルを足す。 24 rb.velocity = moveForward * moveSpeed + new Vector3(0, rb.velocity.y, 0); 25 26 // キャラクターの向きを進行方向に 27 if (moveForward != Vector3.zero) 28 { 29 transform.rotation = Quaternion.LookRotation(moveForward); 30 } 31 } 32 33 34 // Update is called once per frame 35 void Update () 36 { 37 inputHorizontal = Input.GetAxisRaw("Horizontal"); 38 inputVertical = Input.GetAxisRaw("Vertical"); 39 } 40} 41

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

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

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

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

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

guest

回答2

0

ベストアンサー

1.そうです 下と同じ意味です
Camera.main.transform.rotation * Vector.forward

2.向きはそのままに長さを1に調整したベクトルを返します
新たに生成するので、元になったベクトルの中身は変更されません

var v = new Vector3(3, 4, 0);
var v2 = v.normalized; // v2 = (0.6, 0.8, 0) で v = (3, 4, 0)

投稿2019/04/03 06:54

izmktr

総合スコア2856

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

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

0

Camera.main.transform.forwardなのでカメラのZ軸で認識は合っていますが、正確にはカメラの前方方向であってワールド座標のZ軸ではないのでご注意下さい。

normalizedしているのは、ベクトルを作るという認識で合っています。その辺は高校数学なので解説はしませんが、もっと正確にはベクトルを正規化しているという事です。

投稿2019/04/03 06:54

stdio

総合スコア3307

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問