回答編集履歴

1

追記を受けて

2021/03/01 05:38

投稿

MMashiro
MMashiro

スコア2378

test CHANGED
@@ -11,3 +11,49 @@
11
11
  ![イメージ説明](1aa282ef1c50e45b1f6577334edb29f0.png)
12
12
 
13
13
  (赤丸がSceneComponentの位置)
14
+
15
+
16
+
17
+ ---
18
+
19
+
20
+
21
+ ## 追記を受けて
22
+
23
+ > わかりやすく言うと、プレイヤーにコリジョンがついていまして、コリジョンに落ちているアイテムがあたるとそのアイテムを拾えてそのときにコリジョンが大きくなってさらに広い範囲のアイテムを取得できるということです。
24
+
25
+ > でプレイヤーが後ろのものを拾えるのがおかしいと思ったので、コリジョンを大きくするときは前方だけ
26
+
27
+ 広げようと思いました。
28
+
29
+
30
+
31
+ Sphereはあくまで円なので片方だけ伸ばすというのは不可能です。
32
+
33
+ 解決方法は二つ考えられます
34
+
35
+
36
+
37
+
38
+
39
+ ### 1. Capsule Component を使用する(非推奨)
40
+
41
+ カプセル状であれば自身の前方方向に伸ばしていけば近い動作は実現できるかもしれません
42
+
43
+ ただインゲーム中に伸ばした時にはCapsule Componentの中心を基準に上下に伸びるのでComponentの位置も計算して自キャラの後ろに判定がいかないようにする必要があります
44
+
45
+ 解決案としては微妙そうです
46
+
47
+
48
+
49
+ ### 2. Sphere Collisionを使用してアイテムの拾える範囲を計算で制限する(推奨)
50
+
51
+ 今回の問題点は『円が伸ばせない事』ではなく、『円を伸ばすと自キャラの後ろにも当たり判定が行ってしまう事』であるため、
52
+
53
+ 普通にSphereCollisionのサイズを大きくしていき、当たり判定が来た時にそのアイテムが自キャラの後ろにあるか前にあるかを計算で求めてやればいいです。
54
+
55
+ 計算は内積を使えば簡単に求まります。
56
+
57
+ 自キャラの前方方向と自キャラからアイテムまでの方向の2ベクトルから内積を取ると0より大きければ前方向、0より小さければ後ろ方向となります
58
+
59
+ ![イメージ説明](1f8c91333a8b31234fd0a25fb4113899.png)