前提・実現したいこと
物を投げたり発射した時に、その反動で移動させたいです。
例えば、ツルツルの床でボールを投げたら、その逆の方向に人が進むようにしたいです。
どのような機能を使って作用反作用を表すのでしょうか?
参考動画
↓0:35 あたりからの内容
【物理エンジン】お金を噴射して飛んだら、いくらで宇宙まで行けるのか
↓0:25 あたりからの内容
【物理エンジン】摩擦がなかったらおならで前進できるのか?
該当のソースコード
これは砲弾を発射するだけのスクリプトです。
エラーは出てませんが一応載せました。
C#
1public class ShotShell : MonoBehaviour 2{ 3 4 public GameObject shellPrefab; 5 public float shotSpeed; 6 public AudioClip shotSound; 7 8 void Update() 9 { 10 11 // もしもSpaceキーを押したならば 12 if (Input.GetKeyDown(KeyCode.Z)) 13 { 14 15 // 砲弾のプレハブを実体化する。 16 GameObject shell = Instantiate(shellPrefab, transform.position, Quaternion.identity) as GameObject; 17 18 // 砲弾に付いているRigidbodyコンポーネントにアクセスする。 19 Rigidbody shellRb = shell.GetComponent<Rigidbody>(); 20 21 // forward(Z軸)の方向に力を加える。 22 shellRb.AddForce(transform.forward * shotSpeed); 23 24 // 発射した砲弾を3秒後に破壊する。 25 Destroy(shell, 3.0f); 26 27 } 28 } 29} 30
試したこと
砲弾を発射するスクリプトを書きました。
それを適当な親オブジェクト(Cube)の子オブジェクトに設定しました。
床や親オブジェクトの摩擦を0にして砲弾を発射しましたが、作用反作用は起こらず、
今のところ、ただの弾が出る物体です......。
Unityにおける反動の事を調べましたが、参考になるサイトが見つかりませんでした。
もしかして、反動(作用反作用)のような機能は、あらかじめ計算して、反動で動いたかのように見せるのでしょうか...?
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/24 00:24