提示画像ですがBoxCollider とRigidbodyをアタッチしているCubeが座標が上に上がってしまいます。これは何が原因なのでしょうか?
試したこと
地面とCubeに隙間を十分に用意して実験
cs
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class WoodBox : MonoBehaviour 6{ 7 [SerializeField] private uint HP = 3; //耐久値 8 [SerializeField] private GameObject item; //アイテム 9 Rigidbody rb; 10 11 void Start() 12 { 13 rb = GetComponent<Rigidbody>(); 14 } 15 16 void FixedUpdate() 17 { 18 rb.AddForce(new Vector3(0,-2000,0)); 19 } 20 21 void Update() 22 { 23 24 } 25 26 private void OnCollisionEnter(Collision collision) 27 { 28 if(collision.gameObject.tag == "Weapon") 29 { 30 HP--; 31 if(HP <= 0) 32 { 33 if(Random.Range(0,2) == 1) 34 { 35 Instantiate(item,transform.position,transform.rotation); 36 } 37 38 Destroy(this.gameObject); 39 } 40 } 41 } 42}
根本的な解決ではないですが、
rigidBody内にある、 Freeze Positionのyにチェックを入れれば、とりあえず治るのではないでしょうか。
あとは、use gravity(重力の影響を受ける)をonにするとかを試してみてください。
それも試しました。また地面が下がっているのではないかと思い確認しました。
> Freeze Positionのy
ですが積みあがってる木箱に攻撃すると壊れるという動作を実装したいのですがつけられませんw
そうなんですねw
Massをもっと大きくして、質量を重くしてもだめですか?
あと、「rb.AddForce(new Vector3(0,-2000,0));」を削除(コメントアウト)すると、どうなりますか?
やってみましたがわかりませんでした。プロジェクトセッティングから物理の設定を初期化しましたが
やはり変わりませんw
キューブのy座標が明らかに上がっていることは、確認済みですよね。
そういえば、「上に上がってしまいます」とは、実行時に一度だけポンと上がるのですか、それとも、永遠にちょっとずる上がって行くのでしょうか?
永遠にスーッって上に上がってしまいます。
groundのy座標は、実行中に確認しても、きちんと固定(上下しない)されていますか?
あとは、上がるタイミングは、ゲーム実行をしてすぐにですか?
私の方で、同じプログラムを実行しても、普通に問題なかったので、何か他のプログラムの影響もあるのかもしれません。
なるほどわかりました。
お力になれず、申し訳ございません。
ゲーム制作、頑張ってください!
回答1件
あなたの回答
tips
プレビュー