質問編集履歴
3
インスペクターなどの画像を追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -143,3 +143,7 @@
|
|
143
143
|
}
|
144
144
|
|
145
145
|
```
|
146
|
+
|
147
|
+
![イメージ説明](c2cb6eeb0a2cc4e872e66fdc91be984f.png) ![イメージ説明](8a73eb0c6b4486c195070b47864829b4.png)
|
148
|
+
|
149
|
+
![イメージ説明](7e852d5cd66ad77e362982104ba3ce02.png)
|
2
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -23,6 +23,10 @@
|
|
23
23
|
色々錯誤してドラッグして移動するまでは出来たのですが上記方法が結びつきません。
|
24
24
|
|
25
25
|
分かる方ヒントでも良いので教えて下さい。
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
★回答をいただいた事を加味して修正しました。
|
26
30
|
|
27
31
|
|
28
32
|
|
@@ -70,6 +74,8 @@
|
|
70
74
|
|
71
75
|
prevPos = transform.position;
|
72
76
|
|
77
|
+
Debug.Log("OnBeginDrag");
|
78
|
+
|
73
79
|
}
|
74
80
|
|
75
81
|
|
@@ -81,6 +87,8 @@
|
|
81
87
|
// ドラッグ中は位置を更新する
|
82
88
|
|
83
89
|
transform.position = eventData.position;
|
90
|
+
|
91
|
+
Debug.Log("OnDrag");
|
84
92
|
|
85
93
|
}
|
86
94
|
|
@@ -94,6 +102,8 @@
|
|
94
102
|
|
95
103
|
transform.position = prevPos;
|
96
104
|
|
105
|
+
Debug.Log("OnEndDrag");
|
106
|
+
|
97
107
|
}
|
98
108
|
|
99
109
|
|
@@ -101,6 +111,8 @@
|
|
101
111
|
public void OnDrop ( PointerEventData eventData )
|
102
112
|
|
103
113
|
{
|
114
|
+
|
115
|
+
Debug.Log("OnDrop");
|
104
116
|
|
105
117
|
var raycastResults = new List<RaycastResult>();
|
106
118
|
|
1
コードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -28,94 +28,106 @@
|
|
28
28
|
|
29
29
|
下記スクリプトをGameObjectAにアタッチしています。
|
30
30
|
|
31
|
+
GameObjectBのTagをDroppableFieldにしました。
|
32
|
+
|
31
33
|
|
32
34
|
|
33
35
|
```ここに言語を入力
|
34
36
|
|
35
|
-
|
37
|
+
using System.Collections.Generic;
|
36
38
|
|
37
|
-
|
39
|
+
using UnityEngine;
|
38
40
|
|
39
|
-
|
41
|
+
using UnityEngine.EventSystems;
|
40
42
|
|
41
|
-
|
43
|
+
using UnityEngine.UI;
|
42
44
|
|
43
45
|
|
44
46
|
|
45
|
-
|
47
|
+
// Imageコンポーネントを必要とする
|
46
48
|
|
47
|
-
void Start () {
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
}
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
49
|
+
[RequireComponent ( typeof ( Image ) )]
|
56
|
-
|
57
|
-
void Update () {
|
58
|
-
|
59
|
-
swipeController();
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
}
|
64
50
|
|
65
51
|
|
66
52
|
|
67
|
-
|
53
|
+
// ドラッグとドロップに関するインターフェースを実装する
|
68
54
|
|
69
|
-
|
55
|
+
public class DragAndDrop : MonoBehaviour, IDragHandler, IBeginDragHandler, IEndDragHandler, IDropHandler
|
70
56
|
|
71
|
-
|
57
|
+
{
|
72
58
|
|
73
|
-
|
59
|
+
// ドラッグ前の位置
|
74
60
|
|
75
|
-
|
61
|
+
private Vector2 prevPos;
|
76
62
|
|
77
|
-
toolPos = this.transform.position;
|
78
63
|
|
79
|
-
tapPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
|
80
64
|
|
81
|
-
|
65
|
+
public void OnBeginDrag ( PointerEventData eventData )
|
82
66
|
|
83
|
-
|
67
|
+
{
|
84
68
|
|
85
|
-
|
69
|
+
// ドラッグ前の位置を記憶しておく
|
86
70
|
|
87
|
-
|
71
|
+
prevPos = transform.position;
|
88
72
|
|
89
|
-
|
73
|
+
}
|
90
74
|
|
91
|
-
if(Input.touchSupported){
|
92
75
|
|
93
|
-
diff = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position) -tapPos;
|
94
76
|
|
95
|
-
|
77
|
+
public void OnDrag ( PointerEventData eventData )
|
96
78
|
|
97
|
-
|
79
|
+
{
|
98
80
|
|
99
|
-
|
81
|
+
// ドラッグ中は位置を更新する
|
100
82
|
|
101
|
-
|
83
|
+
transform.position = eventData.position;
|
102
84
|
|
103
|
-
|
85
|
+
}
|
104
86
|
|
105
|
-
Debug.Log("Up");
|
106
87
|
|
107
|
-
toolPos = toolPosPast;
|
108
88
|
|
109
|
-
|
89
|
+
public void OnEndDrag ( PointerEventData eventData )
|
110
90
|
|
111
|
-
|
91
|
+
{
|
112
92
|
|
113
|
-
|
93
|
+
// ドラッグ前の位置に戻す
|
114
94
|
|
95
|
+
transform.position = prevPos;
|
96
|
+
|
115
|
-
|
97
|
+
}
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
public void OnDrop ( PointerEventData eventData )
|
102
|
+
|
103
|
+
{
|
104
|
+
|
105
|
+
var raycastResults = new List<RaycastResult>();
|
106
|
+
|
107
|
+
EventSystem.current.RaycastAll ( eventData, raycastResults );
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
foreach ( var hit in raycastResults )
|
112
|
+
|
113
|
+
{
|
114
|
+
|
115
|
+
// もし DroppableField の上なら、その位置に固定する
|
116
|
+
|
117
|
+
if ( hit.gameObject.CompareTag ( "DroppableField" ) )
|
118
|
+
|
119
|
+
{
|
120
|
+
|
121
|
+
transform.position = hit.gameObject.transform.position;
|
122
|
+
|
123
|
+
this.enabled = false;
|
124
|
+
|
125
|
+
}
|
126
|
+
|
127
|
+
}
|
128
|
+
|
129
|
+
}
|
116
130
|
|
117
131
|
}
|
118
132
|
|
119
|
-
|
120
|
-
|
121
133
|
```
|