回答編集履歴

1

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

2021/08/24 11:24

投稿

bboydaisuke
bboydaisuke

スコア5291

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