directX ベクトルをもう一つのベクトルへ向ける方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
haru.k

directX ベクトルをもう一つのベクトルへ向ける方法

#1

投稿記事 by haru.k » 4ヶ月前

[1] 質問文
 [1.1] 自分が今行いたい事は何か
 カメラの向きに合わせてプレイヤーを回転させたい

 [1.2] どのように取り組んだか(プログラムコードがある場合記載)
カメラのZ軸から自身のZ軸を引き、引いたベクトルの値をワールド行列に合成

コード:

     //キャラクターのZ方向ベクトル
	Vector charaDir = world.GetAxisZ();

	//カメラのZ方向ベクトル
	Vector camDir = camera->Matrix().GetAxisZ();

    //キャラクターからカメラへのベクトル
	Vector tagDir = camDir - nowDir;
 
    //回転角度を加算
	rot.x += tagDir.y;
	rot.y += tagDir.x;

        world.CreateRotationX(rot.x);
	world.RotateY(rot.y);
	world.RotateZ(rot.z);

 [1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載)
 上方向、右方向にはカメラに合わせてプレイヤーが動くが、カメラを左に向けてもプレイヤーが右に向く

 [1.4] 今何がわからないのか、知りたいのか
カメラを右に向けたらプレイヤーに右に、カメラを左に向けたらプレイヤーを左に向ける処理
  プレイヤーのZ軸をカメラのZ軸と平行にしたい


[2] 環境  
 [2.1] OS : Windows, Linux等々
Windows10
 [2.2] コンパイラ名 : VC++ 2008EE, Borand C++, gcc等々
c++ directX11

haru.k

Re: directX ベクトルをもう一つのベクトルへ向ける方法

#2

投稿記事 by haru.k » 4ヶ月前

初めての質問の為不備があるかも知れません。
足りない部分があれば都度追加します。
宜しくお願い致します。

アバター
usao
記事: 1635
登録日時: 7年前

Re: directX ベクトルをもう一つのベクトルへ向ける方法

#3

投稿記事 by usao » 4ヶ月前

オフトピック
自分にはこのコード断片から処理の妥当性が読み取れない.
(いきなり出てくる nowDir とか rot とか… 他者には意味が取れない気がする)

やりたいことが

> プレイヤーのZ軸をカメラのZ軸と平行にしたい

という話なのであれば,最も素直なのは
「プレイヤーのZ軸 = カメラのZ軸」的な処理になりそうに思うのだが…?

返信

“C言語何でも質問掲示板” へ戻る