###前提・実現したいこと
取得した全てのRigidbodyに同時にAddforceをかけたいです。
###発生している問題・エラーメッセージ
for文でforceを加えているため、順番に力が加わってしまい、うまく動きません。
###該当のソースコード
javascript
1#pragma strict 2static var blastForce = 100; 3static var blastRadius = 100; 4var implode = true; 5 6 7 8function FixedUpdate () { 9 var things : Collider[] = Physics.OverlapSphere(transform.position, blastRadius); 10 for (var i=0; i<things.length; i++){ 11 if (things[i].attachedRigidbody && things[i].attachedRigidbody != GetComponent.<Rigidbody>()){ 12 var offset : Vector3 = (things[i].transform.position); 13 if(0<=offset.x && offset.x<0.1){ 14 offset.x = 0.1; 15 }else if(-0.1<offset.x && offset.x<0){ 16 offset.x = -0.1; 17 } 18 19 if(0<=offset.z && offset.z<0.1){ 20 offset.z = 0.1; 21 }else if(-0.1<offset.z && offset.z<0){ 22 offset.z = -0.1; 23 } 24 things[i].GetComponent.<Rigidbody>().AddForce(blastForce/offset.x, 0, blastForce/offset.z); 25 } 26 } 27} 28
###補足情報(言語/FW/ツール等のバージョンなど)
原点との距離と反比例して力が大きくなっていくようにしています。あまりに距離が近い時は力が無限になるのを防ぐために距離を変えています。
本筋とは関係ないかもしれませんが、以前のご質問だと力の大きさは「自身と相手の距離に反比例」だったかと思います。今回は「あるオブジェクトは範囲内の他のオブジェクトに対して力を及ぼすが、その向きは常に原点から離れる向きで、大きさは相手のオブジェクトと原点の距離に反比例する」ということでいいでしょうか。もし、この条件であるオブジェクトに2個、3個のオブジェクトが作用した場合、働く力は2倍、3倍に増す気がしますが、それでも構わないでしょうか。
できれば、原点との距離ではなく、自身と取得したオブジェクトとの距離に反比例させたいと考えています。あるオブジェクトに複数のオブジェクトが作用した場合、働く力は足し合わせた力になるようにしたいです。力が増すことに関しては問題なく挙動するのであれば大丈夫です。
回答1件
あなたの回答
tips
プレビュー