1

私は、Google 検索でエンター キーを押し下げていました。MouseOrbit.js アセットに基づくカメラ スクリプトがあります。これですべて問題なく動作しますが、追加した基本的な周回とズームに加えて、WASD キーを使用してカメラを世界中に移動させたいと考えています。

W キーはカメラをまっすぐ前方に移動しますが、y 軸は無視します。たとえば、

transform.Translate(Vector3.Forward*Time.Delta*20);

カメラに対してカメラを前方に移動します。これにより、すぐに地面にぶつかります。明らかに後ろに移動すると、反対のことが起こります。望ましい効果は、カメラの角度に関係なく、ワールドに近づいたり遠ざかったりせずにスライドすることです。

最も近いのは、Translate() の Space.World パラメーターを使用することですが、これはカメラの回転を考慮していません。それを考慮に入れることができれば、これは解決されると思いますが、それを行う方法が明確ではありません。

ありがとう、クリス

4

1 に答える 1

1

( http://Gamedev.stackecxchange.comのTetradから)

transform.Translateを使用する必要はありません。特定のフレームでカメラがどれだけ前進するかを計算し(Wキーを押したままにすると、deltaPos = transform.forward * Time.deltaTime * 20のようになります)、そのVector3のY値をゼロに設定してから追加します。デルタベクトルを現在の位置に追加することにより、元の位置に変換します。transform.position+ = deltaPos;

于 2013-02-01T20:41:37.567 に答える