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

質問編集履歴

3

回答による追記

2021/07/11 13:47

投稿

tride
tride

スコア68

title CHANGED
File without changes
body CHANGED
@@ -126,4 +126,12 @@
126
126
 
127
127
 
128
128
  }
129
- ```
129
+ ```
130
+
131
+ ### 追記_2021/07/11_22:43
132
+ Bongoさんのコードを実装してみた結果です。
133
+ 白立方体のRigitbody>抗力を45にしたところ、マウスの早い動きでも貫通しなくなって想定した動きにかなり近いものになりました。
134
+ (抗力が低いと反対方向に跳ねすぎて飛んでいった)
135
+ しかし、以下Gifを見てもらうと分かるかと思いますが、ビョンビョンビョンとかなり高速にバウンドしてしまいます。
136
+ できればもう少し跳ねないのが理想ですが、悩ましい所。
137
+ ![実装](acab6d2b8d1409c75e7369b02b9e9f5d.gif)

2

記入漏れを加筆

2021/07/11 13:47

投稿

tride
tride

スコア68

title CHANGED
File without changes
body CHANGED
@@ -1,21 +1,22 @@
1
- 表題の通りではありますが、オブジェクト(画像中の白立方体)をドラッグ&ドロップした時に、壁(画像中の青立方体)を通り抜けしないようにしたいです。
1
+ 表題の通りではありますが、オブジェクト(白立方体)をドラッグ&ドロップした時に、壁(青立方体)を通り抜けしないようにしたいです。
2
2
  現在のコードでは、カーソル操作と違い、マウスポジションにオブジェクトが瞬間移動するので、通り抜けしてしまう原因自体は理解しているのですが、ここから改善策が思い浮かばずに行き詰っています。
3
3
 
4
4
  なので、なにか別のやり方やアルゴリズム、もしくはアセットなど、表題の目的を解決できる方法を教えていただきたいです。
5
5
 
6
6
  ---
7
7
  **目的**
8
- ・オブジェクト(画像中の白立方体)をドラッグ&ドロップした時に、壁(画像中の青立方体)を通り抜けしないようにしたい
8
+ ・オブジェクト(白立方体)をドラッグ&ドロップした時に、壁(青立方体)を通り抜けしないようにしたい
9
- ・最終的には、この壁(画像中の青立方体)で四方を囲ったり、通路を作りたい。
9
+ ・最終的には、この壁(青立方体)で四方を囲ったり、通路を作りたい。
10
10
 
11
11
  **困ってる事**
12
- ・オブジェクト(画像中の白立方体)をドラッグ&ドロップした時に、壁(画像中の青立方体)を通り抜ける(埋まる)。
12
+ ・オブジェクト(白立方体)をドラッグ&ドロップした時に、壁(青立方体)を通り抜ける(埋まる)。
13
13
 
14
14
  **気になってる事**
15
15
  ・通り抜けする時に抵抗感が若干あるので、この反発力?を増やせば実現できる?(但しそれが何のパラメータなのかは不明)
16
16
  ・下記ソースコードによるマウスによるドラッグ&ドロップでは、現在位置に瞬間移動しているので、このやり方がそもそもダメなのでは?
17
- ・壁(画像中の青立方体)Mathf.Clamp
17
+ ・壁(青立方体)にスクリプトを適用し、オブジェクト(白立方体)のMathf.Clampを反転してやればできるかもしれないが、範囲の反転方法が分からない。
18
18
 
19
+
19
20
  **実施した事**
20
21
  ・類似の質問で、「使うとしたらrigidbody.velocity~」とあったので、試しに"壁に触れたらrigidbody.velocityを0にする"としたが、その後に移動できなくなる。
21
22
   →なんらかのアルゴリズムで実現できそうだけど、アルゴリズムの案が浮かばない。

1

誤記修正

2021/07/11 05:54

投稿

tride
tride

スコア68

title CHANGED
File without changes
body CHANGED
@@ -17,7 +17,7 @@
17
17
  ・壁(画像中の青立方体)でMathf.Clamp
18
18
 
19
19
  **実施した事**
20
- 他回答で、「使うとしたらrigidbody.velocity~」とあったので、"壁に触れたらrigidbody.velocityを0にする"としたが、その後に移動できなくなる。
20
+ 類似の質問で、「使うとしたらrigidbody.velocity~」とあったので、試しに"壁に触れたらrigidbody.velocityを0にする"としたが、その後に移動できなくなる。
21
21
   →なんらかのアルゴリズムで実現できそうだけど、アルゴリズムの案が浮かばない。
22
22
  ・Collision Detection」の項目を「Continuous」に設定
23
23
   →マウスによる移動が指定座標への瞬間移動なので意味がないと理解。
@@ -35,7 +35,7 @@
35
35
  ・Unity 2021.1.12f1
36
36
  ・Visual Studio 2019
37
37
 
38
- 他回答:[https://teratail.com/questions/139884](https://teratail.com/questions/139884)
38
+ 類似質問:[https://teratail.com/questions/139884](https://teratail.com/questions/139884)
39
39
  参考サイト:[https://www.ame-name.com/archives/4631](https://www.ame-name.com/archives/4631)
40
40
  ```C#
41
41