回答編集履歴
1
追加で修正点を足しました。
answer
CHANGED
@@ -5,18 +5,33 @@
|
|
5
5
|
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
|
6
6
|
を下記のもの
|
7
7
|
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
|
8
|
-
に書きかえれば、理想としている状態になるのではないでしょうか?
|
8
|
+
に書きかえれば、ほぼ理想としている状態になるのではないでしょうか?
|
9
9
|
|
10
10
|
なお、落下中に画面を押すと、一瞬だけ押した地点に現れて、
|
11
11
|
再び落下していたとこに戻るのは、touchesBeganなので、
|
12
|
-
押した瞬間だけ
|
12
|
+
押した瞬間だけ位置変更されるためです。
|
13
13
|
そこを修正したいなら、touchesBeganの最初に
|
14
14
|
animator?.removeAllBehaviors()
|
15
|
-
を追加すると、落下中に押し
|
15
|
+
を追加すると、落下中に押した時、落下はなくなり、位置変更できるようになります。
|
16
16
|
|
17
|
+
これはJoseさんの理想かわかりませんが、最初の部分を下記のように修正した方が
|
18
|
+
触って動かせている感が出ると思います。touchesEndedには位置変更コードはいりません。
|
17
19
|
|
18
|
-
|
20
|
+
```Swift
|
21
|
+
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
|
22
|
+
animator?.removeAllBehaviors()
|
23
|
+
}
|
19
24
|
|
25
|
+
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
|
26
|
+
let touch: UITouch! = touches.first
|
27
|
+
location = touch.location(in: self.view)
|
28
|
+
print(location)
|
29
|
+
person.center = location
|
30
|
+
}
|
31
|
+
```
|
32
|
+
|
33
|
+
さらにお節介かもしれませんが、
|
34
|
+
|
20
35
|
```Swift
|
21
36
|
//add gravity
|
22
37
|
let gravity = UIGravityBehavior(items: [person])
|