0

私は 1 つの球体を持っており、Tilt(Input.acceleration) に従って (X & Z で) 重力を変更したいと考えていました。しかし、うまくいきません。重力を変更するために、次のコードを使用しています。

if((Input.acceleration.x) > 0)
    {
        Physics.gravity = new Vector3(9.81f, 0, 0);
    }
    if((Input.acceleration.x) < 0)
    {
        Physics.gravity = new Vector3(-9.81f, 0, 0);
    } 

Zの場合:if((Input.acceleration.y) > 0) { Physics.gravity = new Vector3(0, 0, 9.81f); } if((Input.acceleration.y) < 0) { Physics.gravity = new Vector3(0, 0, -9.81f); }

これらのコードを FixedUpdate 関数で書いています。どこで間違いを犯しているのか、誰にも教えてもらえますか? 私も団結は初めてです。

4

2 に答える 2

0

コメントから正しく理解できた場合、問題は重力が機能していることですが、一度に1つの軸(xまたはz)でのみ機能します。一度に複数の軸に対して同時に重力を機能させるには、次のコードを試してください。

Vector3 newGravity = Physics.gravity;
if((Input.acceleration.x) > 0)
    {
        newGravity.x = 9.81f;
    }
else if((Input.acceleration.x) < 0)
    {
        newGravity.x = -9.81f;
    }
else
    {
        newGravity.x = 0;
    }

if((Input.acceleration.y) > 0)
    {
        newGravity.y = 9.81f;
    }
else if((Input.acceleration.y) < 0)
    {
        newGravity.y = -9.81f;
    }
else
    {
        newGravity.y = 0;
    }

if((Input.acceleration.z) > 0)
    {
        newGravity.z = 9.81f;
    }
else if((Input.acceleration.z) < 0)
    {
        newGravity.z = -9.81f;
    }
else
    {
        newGravity.z = 0;
    }

Physics.gravity = newGravity;

ただし、これにより、わずかな傾斜でも最大の重力が得られます。傾きの角度に応じて重力を徐々に大きくしたい場合は、9.81f に変数を掛ける必要があります。

于 2013-03-29T11:48:50.987 に答える