2022.09.25 Programming  spritekit  swiftui  
 2022.09.19 Programming  swiftui  
 2022.09.11 Programming  swiftui  
 2022.09.04 Programming  swiftui  
 2022.08.28 Programming  spritekit  
 2022.08.28 Programming  spritekit  
 2022.08.28 Programming  spritekit  
 2022.07.31 Programming  spritekit  
 2022.07.10 Programming  spritekit  
 2022.07.03 Programming  spritekit  
 2022.06.26 Programming  spritekit  
 2022.06.19 Programming  spritekit  
 2022.06.14 Programming  spritekit  swiftui  
 2022.06.04 Programming  spritekit  
 2022.05.22 Programming  spritekit  
 2022.05.04 Programming  spritekit  
 2022.04.29 Programming  spritekit  
 2022.04.24 Programming  spritekit  

Physics2




GameScene

import SpriteKit
import GameplayKit

extension SKPhysicsBody {
func ideal() -> SKPhysicsBody {
  //摩擦係数の値で 1 に近いほど摩擦が多くなります0.0から1.0の間
  self.friction = 0
  self.linearDamping = 0  //粘性//体にかかる流体または空気の摩擦力
  self.angularDamping = 0  //体の回転速度を遅くする特性 0.0から1.0の間の値
  self.restitution = 0.98  //反発率
  self.isDynamic = true  //動かせる性質
  self.allowsRotation = false //角力とインパルスの影響デフォルト値はtrue
  // 重力を無視する 重力の影響を受けない
  //circleA.physicsBody?.affectedByGravity = false
  self.affectedByGravity = true
  return self
}
}

class GameScene: SKScene, SKPhysicsContactDelegate {

override func didMove(to view: SKView) {
  backgroundColor = .blue
  self.physicsWorld.contactDelegate = self
  physicsBody = SKPhysicsBody(edgeLoopFrom: frame)
  physicsWorld.gravity = CGVector(dx: 0, dy: -2)

let circleA = SKShapeNode(circleOfRadius: 50)//circleOfRadiusで円の半径
  circleA.position = CGPoint(x:self.frame.midX, y:self.frame.midY + 230)
  circleA.fillColor = UIColor.red
  circleA.lineWidth = 4.0
  circleA.strokeColor = UIColor.lightGray
  self.addChild(circleA)
   circleA.physicsBody = SKPhysicsBody(circleOfRadius: circleA.frame.width/2).ideal()
   //Aカテゴリ
   circleA.physicsBody?.categoryBitMask = 0x1 << 0
   //通過する(衝突される側のcategoryBitMaskとcollisionBitMaskを0にする)
   circleA.physicsBody?.collisionBitMask = 0x1 << 0
    
//物体Aのカテゴリ0と物体Bの衝突が等しくなければAはBを通過する。それ以外は衝突する
// 四角形を作成
  let squareB = SKShapeNode(rectOf: CGSize(width:100, height:100),cornerRadius: 5)
// 四角形の配置位置を指定
 squareB.position = CGPoint(x:self.frame.midX, y:self.frame.midY - 200)
// 四角形の色を指定
 squareB.fillColor = .green
  squareB.lineWidth = 0.0
// シーンに追加
  self.addChild(squareB)
  squareB.physicsBody = SKPhysicsBody(rectangleOf: squareB.frame.size).ideal()
   //Bカテゴリ
  squareB.physicsBody?.categoryBitMask = 0x1 << 1
  //通過する(衝突される側のcategoryBitMaskとcollisionBitMaskを1にする)
  squareB.physicsBody?.collisionBitMask = 0x1 << 1
   //後から指定したsquareBが上に表示される
}
    override func touchesBegan(_ touches: Set, with event: UIEvent?) {
}

}