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

質問編集履歴

1

全体のコードを載せました

2021/10/08 13:51

投稿

Hkr-Y
Hkr-Y

スコア96

title CHANGED
File without changes
body CHANGED
@@ -3,12 +3,59 @@
3
3
  内にか解決法はないでしょうか?
4
4
 
5
5
  ```swift
6
+ import SpriteKit
7
+ import GameplayKit
8
+
9
+ class GameScene: SKScene, SKPhysicsContactDelegate {
10
+
11
+ var red: SKSpriteNode!
12
+ var blue: SKSpriteNode!
13
+
14
+ let redMask:UInt32 = 0b0001
15
+ let blueMask:UInt32 = 0b0010
16
+
17
+ override func didMove(to view: SKView) {
18
+
19
+ self.scaleMode = .aspectFill
20
+
21
+ let border = SKPhysicsBody(edgeLoopFrom: self.frame)
22
+ border.friction = 0
23
+ self.physicsBody = border
24
+
25
+ self.red = SKSpriteNode(imageNamed: "red")
26
+ self.red.scale(to: CGSize(width: 150, height: 150))
27
+ self.red.position = CGPoint(x: 0, y: frame.height / 4)
28
+ self.red.physicsBody = SKPhysicsBody(circleOfRadius: self.red.frame.height / 2)
29
+ self.red.physicsBody?.categoryBitMask = redMask
30
+ self.red.physicsBody?.contactTestBitMask = 0b1111
31
+ self.red.physicsBody?.affectedByGravity = false
32
+ self.red.physicsBody?.restitution = 1.0
33
+ self.red.physicsBody?.linearDamping = 0.0
34
+ self.red.physicsBody?.friction = 0.0
35
+ addChild(self.red)
36
+
37
+ self.blue = SKSpriteNode(imageNamed: "blue")
38
+ self.blue.scale(to: CGSize(width: 100, height: 100))
39
+ self.blue.position = CGPoint(x: frame.width / 4 - 30, y: -frame.height / 4)
40
+ self.blue.physicsBody = SKPhysicsBody(circleOfRadius: self.blue.frame.height / 2)
41
+ self.blue.physicsBody?.categoryBitMask = blueMask
42
+ self.blue.physicsBody?.contactTestBitMask = 0b0001
43
+ self.blue.physicsBody?.affectedByGravity = false
44
+ addChild(self.blue)
45
+
46
+ self.red.physicsBody?.applyImpulse(CGVector(dx: 500, dy: 500))
47
+ }
6
- override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
48
+ override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
7
49
  let location = touches.first!.location(in: self)
8
50
  let node = atPoint(location) as? SKSpriteNode
9
51
  if node?.physicsBody != nil {
10
52
  node?.position = location
11
53
  }
54
+ }
55
+ override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
56
+
57
+ }
58
+ }
12
59
  ```
13
60
 
14
61
  質問方法に至らない点がありましたらすみません。