サイコロの出目を知る方法として、角度を求める等あると思いますが
各目の位置に Transform を設置し、各 Transform の y 座標が一番大きな要素を出目として判定してみる
サイコロにはAssetStoreから無料のこちらを利用する
Dice Pack Light | Packs | Unity Asset Store
出目の Transform 登録
1から順番にListに入れ込んでいく
サイコロの回転
回転は angularVelocity
に適当な値を入れて回転させる
_rigidbody.angularVelocity = new Vector3(10, 10, 5);
サイコロの振り
何かキーが押されたら velocity と 重量を加えて振る
private void Update() { if (Input.GetKeyDown(KeyCode.UpArrow)) { _rigidbody.useGravity = true; _rigidbody.velocity = Vector3.left; } }
出目判定
RigidBoy が Sleep したら 書く出目のY座標とインデックスを確保しておき
一番Yの値が大きいのをLogに出す
[SerializeField] private Transform[] _diceSpots; private void CheckSpot() { if (!_rigidbody.IsSleeping()) return; var topIndex = 0; var topValue = _diceSpots[0].transform.position.y; for (var i = 1; i < _diceSpots.Length; ++i) { if (_diceSpots[i].transform.position.y < topValue) continue; topValue = _diceSpots[i].transform.position.y; topIndex = i; } Debug.Log(topIndex + 1); } }
動画
停止したタイミングでログが表示されている