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

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

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

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

Unity3D

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

Q&A

解決済

1回答

2596閲覧

Unity ベクトルの足し引きを教えてほしいです

y0shida

総合スコア15

C#

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

Unity3D

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

0グッド

0クリップ

投稿2021/05/04 14:00

「カメラとターゲットと一定距離で追従するようにする」
という機能を実装したかったので、下記サイトを参考にしてみたのですが

https://futabazemi.net/notes/unity-distance/

//映すプレイヤー public GameObject target; private Vector3 dis; void Start() { //カメラとターゲットの間の距離? dis = transform.position - target.transform.position; } void Update() { transform.position = target.transform.position + dis; }

Startに書いたベクトルの引き算は、「このスクリプトがついているカメラのポジション から ターゲットのポジション を引いて その間の距離を算出する」
という認識で会っていますか?
また
Updateに書いた「ターゲットのポジション に 距離 を足した物を カメラのポジションとする」というのがいまいち理解できません。

なぜ、ターゲットのポジションに距離を足すと一定距離を保てるのでしょうか?

過去に下記の質問をしました
https://teratail.com/questions/315654?whotofollow=
向きと正規化については理解できました

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

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

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

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

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

hoshi-takanori

2021/05/04 17:11

dis は単なる距離 (スカラー値) ではなく、カメラとターゲットの位置の差分を表すベクトル (方向と距離を持った量) です。そのため、ターゲットの新しい位置に dis を足すことにより、ターゲットから同じ方向と距離を保ったままカメラを移動させることができます。
y0shida

2021/05/08 14:04

今まで勘違いしてましたが ベクトルは向きと距離の2つの情報を持っていると理解できました、ありがとうございます。
guest

回答1

0

ベストアンサー

dis = transform.position - target.transform.position;
は過去質問の通りです。
「このスクリプトが付いているGameObjectの位置(座標) - ターゲットの位置(座標)」で算出されるのは「2つの位置間のベクトル」です。
ベクトルは向きと距離を持つものなので、「〜その間の距離を算出する」というのは間違いです。(「距離」はdis.magnitudeで取得できます)


transform.position = target.transform.position + dis;
は、位置とベクトルの足し算です。上の逆算になります。
算数の話になりますが、「A - B = C」ということは「A = C + B」になります。

イメージとしては、ここでのベクトルとはスマホの自撮り棒です。
ターゲットが一定の長さ・一定の角度の自撮り棒を持っていた時、ターゲットの位置と自撮り棒の長さと角度がわかればカメラの位置が算出できます。

投稿2021/05/06 01:10

sakura_hana

総合スコア11427

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

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

y0shida

2021/05/15 13:58

お礼の返事が遅くなってしまってすみません。 理解できそうで出来なかったので勉強していたので今までお礼できませんでした。 本を読んでみて理解できました、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問