0

ヘッドセットの傾きを利用してプレーヤーを動かす、Oculus Rift の新しい制御スキームに取り組んでいます。つまり、頭を前後に傾けて前後に移動し、左右に機銃掃射します。カメラは回転する球体に結び付けられています。これにより、加速感が増し、ちょっと飛んでいるように感じます。これまでのところ、非常にうまく機能していますが、グローバル軸でのみです。したがって、左を向いて頭を前に傾けても、開始位置に従って前に進みます (左を向いている場合は、右に行くことを意味します)。カメラが向いている方向に対して前進して機銃掃射できるように修正しようとしていますが、うまくいきません。とてつもなく単純なものだと強く感じていますが、それが見つからないようです。

これが私が今ローリングスフィアに持っているものです:

public GameObject RightCamera;


void FixedUpdate(){
    float angleX = RightCamera.transform.eulerAngles.x;
    angleX = (angleX > 180) ? angleX - 360 : angleX;

    float angleZ = RightCamera.transform.eulerAngles.z;
    angleZ = (angleZ > 180) ? angleZ - 360 : angleZ;

    Vector3 movement = new Vector3 (-angleZ, 0, angleX);

    GetComponent<Rigidbody>().AddForce (movement);

}
4

2 に答える 2

0

これを行う簡単な方法があります。クォータニオン (または 3x3 行列) として表される方向を指定すると、単位 Y 軸ベクトルで構成されます。

結果の vec3 の X 値と Z 値が力になります。垂直から 90 度の角度に近づくと、オイラー角を考慮する必要はほとんどありません。

于 2015-03-31T17:51:20.347 に答える