ビルド前のUnityエディタ上ではエラーなども無く問題なく動作するのですが  
ビルドをかけると 実機上でもエディタ上でも  
AddForce関数の部分のみ動作しなくなって困っています。

因みにUnityエディタを再起動するとまたエディタ上では問題なく動作します。

実機はAndroid4.4の端末で、  
Unityのバージョンは5.6.3p2のPersonalライセンスをWindows7で使っており  
問題の関数は以下の様な物です。

```

    public void Shoter( float Angle  ,float ShotPower){
    
        float ShotX = Mathf.Cos(Angle) * speed * ShotPower;
        float ShotZ = Mathf.Sin(Angle) * speed * ShotPower;
    
        Rigidbody RB = transform.GetComponent<Rigidbody>();
        RB.AddForce(new Vector3(ShotX, 0.0f, ShotZ), ForceMode.Impulse);
    
        Gctrl.GetComponent<GameController>().DebugText(ShotX.ToString()+":"+ShotZ.ToString(),1);
    }
    
```

最後の行にデバッグ用のテキストを出力する処理を追加しているのですが  
こちらは問題無く動いている様なので動いてないのはAddFoce関数のみの様です。

元々実機上でも問題無く動作していたのですが  
この関数を含むオブジェクトを Resources.Load関数でシーンに読み込む処理を加えた際に  
Unityエディタ上でも実機上でも動作しない現象が発生した為、  
元の状態まで戻したのですが前述した様な状態に成っています。

因みにGameObject.SetActive(false)で一度オブジェクトを非アクティブにした後  
GameObject.SetActive(true)でアクティブに戻した際にも同様に  
AddFoce関数が動かない状態に成るのですがこれは通常の動作なのでしょうか？

どなたか似たような症状を経験された方や、解決方をご存知の方が居ましたら  
ご教授お願い致します。
CC BY-SA 4.0
2018-05-31T08:54:48.747
44428
2019-09-11T13:02:45.303
2018-05-31T12:05:51.917
3060
28729
question
unity3d
UnityでAndroid実機用にビルドするとRigidbody.AddForceが動かなく成る現象に悩まされています。
解決しました。

問題は前述の関数とは別の箇所で  
オブジェクトの速度が一定以下になった際にRigidbodyを強制的にスリープさせる処理を  
行っていたのですが、開発中は初速を得た後に動いていた処理が  
ビルドやインスタンスの生成、アクティブ状態の変更を行った際に順序が整理され逆転し  
初速を得られない状態に成っていたのが原因でした。

処理を行うタイミングを明示的にする事で解決致しました。

初歩的な見落としでお騒がせしてしまい申し訳ございませんでした。
CC BY-SA 4.0
2018-06-01T04:53:58.533
44447
2018-06-01T04:53:58.533
28729
44428
answer