グーグルで調べた後、この質問に対する答えが見つからなかったので、ここで試してみます。
(2D)キャンバスを使用して、JavaScriptで3Dワールドを作成し、それで正常に動作する3Dカメラを作成しました。ただし、カメラは「自由なカメラ」であるため、回転すると、カメラはそれ自体を中心に回転します。
今、私はカメラを世界内のオブジェクトの周りに回転させたいと思っていますが、その方法を理解するのに苦労しています。
次の式を試しましたが、回転しようとする前にびっくりします...
this.x += (Math.sin(this.yd * (Math.PI / 180)) * distance);
this.z -= (Math.cos(this.yd * (Math.PI / 180)) * distance);
これまでの更新
以下の WojtekT によって提供された anwser のおかげで、次のコードにたどり着きました。カメラをオブジェクトの周りに向けますが、ズームインしているようにも見えます...距離変数がほとんど変化しないため、これは私の目がだまされているだけかもしれません(小さな丸めの問題があると思いますが、それ以外は期待される結果が得られます)
this.y = (Math.sin(this.yd * (Math.PI / 180)) * distance + this.targetY);
this.z = (Math.cos(this.yd * (Math.PI / 180)) * distance + this.targetZ);
this.yd は、度単位で実行する速度です。
どの式が必要ですか?
編集:どのコードがこの問題の解決に役立つかわからないため、完全なソースを次に示します。
http://clanpvp.com/sol http://clanpvp.com/js/sol/camera.js < Camera オブジェクト、これだろう。
デバッグ上の理由から、キーアップ イベントがトリガーされると、新しいフレームが読み込まれます。また、デバッグの場合、ターゲット オブジェクトは固定点です。画面中央に。
矢印キーはカメラを動かし、wasd キーはカメラを回転させます。これまでのところ、W と S だけが何かを行い、上記のコードのおかげで間違っています...