teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

コメントで回答の誤りを指摘され、訂正しました。

2021/08/24 11:24

投稿

bboydaisuke
bboydaisuke

スコア5339

answer CHANGED
@@ -1,3 +1,30 @@
1
- 2D と 3D で設定は若干違いますが、Physics Material の Bounciness つまり反発係数を 1 より大きい値にすればよいです。
1
+ ~~2D と 3D で設定は若干違いますが、Physics Material の Bounciness つまり反発係数を 1 より大きい値にすればよいです。~~
2
2
 
3
- 3D の場合は Bounce Combine をとりあえず Maximum にしておくとよいでしょう。
3
+ ~~3D の場合は Bounce Combine をとりあえず Maximum にしておくとよいでしょう。~~
4
+
5
+ 訂正 3D の場合は Bounciness に 1 より大きい値は指定できませんでした。なので次のようなスクリプトで跳ね返った時に加速させるとよいと思います。
6
+
7
+ ```csharp
8
+ using UnityEngine;
9
+
10
+ [RequireComponent(typeof(Rigidbody))]
11
+ public class Accelerator : MonoBehaviour
12
+ {
13
+ [SerializeField, Range(0, 2.0f)] float m_accelarateRatio = 1.2f;
14
+ Rigidbody m_rb;
15
+
16
+ void Start()
17
+ {
18
+ m_rb = GetComponent<Rigidbody>();
19
+ }
20
+
21
+ void OnCollisionExit(Collision collision)
22
+ {
23
+ m_rb.velocity *= m_accelarateRatio;
24
+ }
25
+ }
26
+ ```
27
+
28
+ **動いている様子**
29
+ ![イメージ説明](8f7762dc31279a050fd7a998e0e19769.gif)
30
+ Sphere に Rigidbody と Accelerator コンポーネントを追加しています。