ページ 11

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

Posted: 2020年10月19日(月) 02:30
by haru.k
[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

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

Posted: 2020年10月19日(月) 02:32
by haru.k
初めての質問の為不備があるかも知れません。
足りない部分があれば都度追加します。
宜しくお願い致します。

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

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

やりたいことが

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

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