2016-08-08 4 views
0

ボールをコントロールするために以下のスクリプトを使用していますが、私が望むものとまったく同じではありません。 3Dゲームは、デバイスのホームボタン(またはボトム)を右手にして、横長モードで再生されます。デバイスを左に傾ける(回転させない)と、ボールのロールが左に移動し、右に傾くとロールが右に移動するはずです。デバイスを下に傾けると(デバイスの上部が下がる)ボールの回転が速くなり、デバイスを上に傾けてゆっくり動かす必要があります。 ボールを無期限に加速したくないです。Unity3Dの傾斜装置によるボールのコントロール

以下のコードでは、デバイスを平らに置くのではなく、デバイスをまっすぐに保持したいと考えています。あなたの傾斜の問題については

 void FixedUpdate() 
    { 
     // Player movement in mobile devices 
     // Building of force vector 
     Vector3 movement = new Vector3(-Input.acceleration.x, 0.0f, -Input.acceleration.z); 
     // Adding force to rigidbody 
     var move = movement * speed * Time.deltaTime; 
     rigidbdy.AddForce(move);   
    } 
+2

あなたはあなたがしたいことを言っていますが、あなたはそれがどういうふうに機能しているか教えてくれません。質問を編集し、現在の実装がどのように機能していないかについての詳細を含めてください。 –

答えて

2

あなたはおそらくちょうど彼らがチルト制御を行うために(-Input.acceleration.y, 0.0f, Input.acceleration.x);を行うin the example in the documentation(-Input.acceleration.x, 0.0f, -Input.acceleration.z);以外のものを選択する必要があります。

最大速度の問題については、コードにrigidbdy.velocity.magnitude > maxSpeedのチェックを追加し、値が上限である場合はその値を上限にしてください。

速度はあなたがインスペクタに maxSpeedのために設定されているどのような値に頂いたことになります
public float maxSpeed; 
void FixedUpdate() 
{ 
    // Player movement in mobile devices 
    // Building of force vector 
    Vector3 movement = new Vector3(-Input.acceleration.y, 0.0f, Input.acceleration.x); 
    // Adding force to rigidbody 
    var move = movement * speed * Time.deltaTime; 
    rigidbdy.AddForce(move); 

    //Limits the max speed 
    if(rigidbdy.velocity.magnitude > maxSpeed) 
    { 
     rigidbdy.velocity = rigidbdy.velocity.normalized * maxSpeed; 
    } 
} 

+0

ありがとう、完璧に動作します! – jbassking10

関連する問題