質問編集履歴

3

文章を編集

2019/10/23 20:17

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ---**質問内容**---
6
6
 
7
- 3Dアクションゲームで地面、攻撃、移動範囲の当たり判定を分けたくプレイヤーの子に空のオブジェクトを作りそこに当たり判定を入れて複数のコリジョンを取りたいです。
7
+ 3Dアクションゲームで地面、攻撃、移動範囲の当たり判定を分けたくプレイヤーの子に空のオブジェクトを作りそこに当たり判定を入れて複数のコリジョンを取りたいです。OnTriggerではなく"OnCollisionEnter"を使う方法が知りたいです。
8
8
 
9
9
 
10
10
 
@@ -16,6 +16,8 @@
16
16
 
17
17
 
18
18
 
19
+
20
+
19
21
  足元の子の空のオブジェクト
20
22
 
21
23
  ![イメージ説明](6755695d3c44752d6941308f6288a9f7.png)

2

文章内にバージョンを追記しました。

2019/10/23 20:17

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,7 @@
1
+ Unity バージョン2018.4.9f1
2
+
3
+
4
+
1
5
  ---**質問内容**---
2
6
 
3
7
  3Dアクションゲームで地面、攻撃、移動範囲の当たり判定を分けたくプレイヤーの子に空のオブジェクトを作りそこに当たり判定を入れて複数のコリジョンを取りたいです。

1

文章を大幅に編集

2019/10/23 09:25

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,18 +1,22 @@
1
- キャラクタの子の足元にコライダーを入れて攻撃とかの当たり判定はまた別のコライダーで行いたいため空のオブジェクトを作りそこに足元地面判定用のを入れました。
2
-
3
-
4
-
5
- 1、その地面判定用の空のオブジェクトにアタッチしたスクリプトでOnCollsionEnterが反応しないのでOnTriggerEnterを使うようにしましたがなぜOnCollisionEnterは使えないのでしょうか?
6
-
7
-
8
-
9
- 2、親子関係コリを含むこ場合は別のスクリプトで参照したい場合どうすいいのでしょう
10
-
11
-
12
-
13
-
14
-
15
- ![イメー説明](3f46587af07a7020546b46d7cc9feb37.png)
1
+ ---**質問内容**---
2
+
3
+ 3Dアクションゲームで地面、攻撃、移動範囲の当たり判定を分けたくプレイヤーの子に空のオブジェクトを作りそこに当たり判定を入れて複数のコリジョンを取りたいです。
4
+
5
+
6
+
7
+ ※画像にはありませんが Rigidbodyを付けない版、つける版両方やりました。
8
+
9
+ ゲームオブェクトについてです。is TriggerをオにするとOnTriggerEnterのスクリプトは反応するのは知ってますが自分はOnCollisionEnter行いたいです。OnCollisionEnterを使うにRigidbodyを入と使えなため提示画像通りRigidbodyを入れis Kinematicをオフにするとプレイヤーだけ落下してしまい足元地面判定が取れません、またis kinematicをオンにするとプレイヤーと一緒に落下しますがCollsiion Triggerともに反応しませんまた常にuse gravityはオフす。またプレイヤースクリプトは常に落下する重力落下処理が書れているはずです。
10
+
11
+
12
+
13
+
14
+
15
+ 足元の子の空のオブェクト
16
+
17
+ ![イメージ説明](6755695d3c44752d6941308f6288a9f7.png)
18
+
19
+ スクリプト
16
20
 
17
21
  ```ここに言語を入力
18
22
 
@@ -24,13 +28,11 @@
24
28
 
25
29
 
26
30
 
27
- public class Ground : MonoBehaviour
31
+ public class ground : MonoBehaviour
28
32
 
29
33
  {
30
34
 
31
-
32
-
33
- public bool isGround;
35
+ bool isGround;
34
36
 
35
37
  // Start is called before the first frame update
36
38
 
@@ -50,7 +52,21 @@
50
52
 
51
53
  {
52
54
 
53
- Debug.Log(isGround);
55
+ // Debug.Log("Ground");
56
+
57
+
58
+
59
+ }
60
+
61
+
62
+
63
+ private void OnCollisionEnter(Collision collision)
64
+
65
+ {
66
+
67
+ Debug.Log("Collision 地面判定!");
68
+
69
+
54
70
 
55
71
  }
56
72
 
@@ -60,16 +76,128 @@
60
76
 
61
77
  {
62
78
 
63
- isGround = true;
64
-
65
- Debug.Log("当たり判定");
79
+ Debug.Log("Trigger 地面判定");
66
-
80
+
67
- }
81
+ }
68
-
69
-
70
82
 
71
83
  }
72
84
 
73
85
 
74
86
 
75
87
  ```
88
+
89
+
90
+
91
+
92
+
93
+ プレイヤーオブジェクト
94
+
95
+ ![イメージ説明](e791ef954f833d79151bc9967b7a9050.png)
96
+
97
+
98
+
99
+ スクリプト
100
+
101
+ ```ここに言語を入力
102
+
103
+ using System.Collections;
104
+
105
+ using System.Collections.Generic;
106
+
107
+ using UnityEngine;
108
+
109
+
110
+
111
+ public class Player : MonoBehaviour
112
+
113
+ {
114
+
115
+ Rigidbody rb;
116
+
117
+ Vector3 move;
118
+
119
+ // GameObject go = GameObject.Find("GameObject");
120
+
121
+
122
+
123
+
124
+
125
+ // Start is called before the first frame update
126
+
127
+ void Start()
128
+
129
+ {
130
+
131
+ rb = GetComponent<Rigidbody>();
132
+
133
+ }
134
+
135
+
136
+
137
+ // Update is called once per frame
138
+
139
+ void Update()
140
+
141
+ {
142
+
143
+ move.x = Input.GetAxis("Horizontal");
144
+
145
+ move.z = Input.GetAxis("Vertical");
146
+
147
+
148
+
149
+ }
150
+
151
+
152
+
153
+ /*アニメーション管理*/
154
+
155
+ void Animation_Mng()
156
+
157
+ {
158
+
159
+
160
+
161
+ }
162
+
163
+
164
+
165
+ private void FixedUpdate()
166
+
167
+ {
168
+
169
+ rb.AddForce(new Vector3(0,-10.0f,0));
170
+
171
+ rb.velocity = new Vector3(move.x, rb.velocity.y, move.z);
172
+
173
+ }
174
+
175
+
176
+
177
+
178
+
179
+ private void OnCollisionEnter(Collision collision)
180
+
181
+ {
182
+
183
+
184
+
185
+ //Debug.Log("プレイヤーcollision");
186
+
187
+
188
+
189
+ }
190
+
191
+ }
192
+
193
+
194
+
195
+ ```
196
+
197
+
198
+
199
+
200
+
201
+ 一応地面であるトレインのコンポーネントです、また障害物の壁などが出る予定です。
202
+
203
+ ![イメージ説明](f2600aa19ed9fa0375a3b772c74f12d1.png)