scene내부에 중력과 탄성 등을 이용해 가장 간단히 만들 수 있는 게 무엇이 있을까 생각하다 '수박게임'으로 정했다.
- 기존에 벽이라는 skSpriteNode를 생성해서 4방향에 벽을 배치했었다.
- scene의 frame으로 physicsBody를 주는 방법이 있다.
private func configureBoundary() {
let boundary = SKPhysicsBody(edgeLoopFrom: self.frame)
boundary.categoryBitMask = PhysicsCategory.wall.bitmask
boundary.collisionBitMask = PhysicsCategory.all.bitmask
boundary.restitution = 0.3
boundary.isDynamic = true
self.physicsBody = boundary
}
- restitution은 탄성의 정도라고 생각하면 된다. (0 ~1.0까지의 값이고 기본값은 0.2다)
- 저번의 벽돌깨기에서는 벽이랑 충돌을 했을 때 벡터 값을 반사시켜 주는 방식으로 반사를 표현했다. 하지만 collisionBitMask에 설정을 하면 물리 엔진에 의존한 표현이 가능해진다.
- gameOverLine을 추가하다 보니 해당 line은 중력의 영향을 받으면 안 되기 때문에 중력 영향을 꺼준다.
line.physicsBody?.affectedByGravity = false
코드는 깃허브에 올려놓았다.
https://github.com/snowy-summer/watermelon-PracSpriteKit/tree/main
GitHub - snowy-summer/watermelon-PracSpriteKit
Contribute to snowy-summer/watermelon-PracSpriteKit development by creating an account on GitHub.
github.com
'SpriteKit' 카테고리의 다른 글
SpriteKit을 이용한 "벽돌 깨기" 만들기 (0) | 2024.06.23 |
---|---|
SpriteKit 시작해보기 (0) | 2024.06.21 |