Xcode의 spritekit으로 게임을 제작하고 있습니다. 그것의 플랫폼 게임과 지금은 평평한 지상 조각으로 잘 작동합니다. 충돌에 대한 png의 투명성을 무시할 수 있는지 궁금합니다. 말하자면, 내가 곡면과 투명도가있는 바닥 조각을 골짜기에 채워 넣으면 플레이어가 모든 것을 덮는 사각형 경계 상자 대신 곡선을 걷게 할 수 있습니까? 내가 발견 할 수있는 유일한 예는 Gamemaker GML 언어입니다. 이미지의 빈 공간이 스프라이트의 일부로 간주되지 않도록 "정밀한"충돌을 수행 할 수 있습니다. 필자는 필요하다면 코드를 제공 할 수 있지만 이것은 개념적 질문 이상의 것 같습니다. 미리 감사드립니다.스프라이트 키트 충돌 : 투명도 무시?
답변
안녕하세요, Apple 문서에서 제공하는 쉬운 해결책이 있습니다.
SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"Spaceship"];
sprite.physicsBody = [SKPhysicsBody bodyWithTexture:sprite.texture size:sprite.texture.size];
이렇게하면 텍스처의 물리적 경로 주위에 물리학자가 생성됩니다.
bodyWithTexture : size :는 iOS 8.0 이상에서만 사용할 수 있습니다. https://developer.apple.com/library/prerelease/ios/documentation/SpriteKit/Reference/SKPhysicsBody_Ref/index.html#//apple_ref/occ/clm/SKPhysicsBody/bodyWithTexture:size : – Whirlwind
문제의 노드의 물리 구조를 인스턴스화하는 방법은 다음과 같습니다. 모든 충돌을 목적으로, 노드가 사각형이기 때문에
node.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:node.size];
은 아마 physicsBody를 만드는 가장 쉽고 가장 일반적인 방법이지만, 또한 위에서 식별 한 문제를 만듭니다.
다른 옵션을 보려면 the documentation for SKPhysicsBody을 (를) 살펴보십시오. PolygonFromPath 및 BodyWithBodies는 아마도 자신이 수행하는 작업에 가장 적합 할 것입니다.
http://dazchong.com/spritekit/은 다각형 물리학을위한 CGPath를 만드는 데 도움이되는 훌륭한 도구입니다. – webbcode
SKPhysicsBody 오른쪽 이동, 그냥 SKPhysicsBody 여기의 색상과 기하학적 관점에서 단순화하여 성능을 개선하고하는 것이 별도의 (간체) 마스크 이미지를 가지고 의미가 않습니다 싶어 코드 :
let birdMask: UInt32 = 0x1 << 0
let pipeMask: UInt32 = 0x1 << 1
//...
pipeImage = SKSpriteNode(imageNamed: "realImage")
//... size and position
let maskTexture = SKSpriteNode(imageNamed: mask)
maskTexture.size = pipeImage!.size // size of texture w/ real imageNamed
pipeImage!.physicsBody?.usesPreciseCollisionDetection = true
pipeImage!.physicsBody = SKPhysicsBody(texture: maskTexture.texture!, size: size)
pipeImage!.physicsBody?.affectedByGravity = false // disable falling down...
pipeImage!.physicsBody?.allowsRotation = false
pipeImage!.physicsBody?.isDynamic = true
pipeImage!.physicsBody?.friction = 0
pipeImage!.physicsBody?.categoryBitMask = pipeMask
pipeImage!.physicsBody?.collisionBitMask = birdMask | pipeMask
pipeImage!.physicsBody?.contactTestBitMask = birdMask | pipeMask
- 1. 스프라이트 키트 다중 충돌
- 2. 튀어 오르는 스프라이트 키트 충돌
- 3. 여러 충돌에 대한 스프라이트 키트 충돌
- 4. 스프라이트 키트
- 5. 스프라이트 키트 출입구
- 6. 스프라이트 키트 - 숨기기 SKSpriteNode
- 7. 스프라이트 키트 : 물리학 장벽 iOS7
- 8. 스프라이트 키트 플립 플레이어 XScale
- 9. 스프라이트 키트 반품?
- 10. 스프라이트 키트 주인공 선택기
- 11. 스프라이트 키트 접촉 수
- 12. 위의 스프라이트 키트 장면
- 13. 반복 - 스프라이트 키트
- 14. 스프라이트 키트 게임 성능
- 15. 스위프트 스프라이트 키트 오류
- 16. 스프라이트 키트 연락처 위임
- 17. 스프라이트 키트 animateWithTextures lags
- 18. 스프라이트 키트 OSX는
- 19. 시차 스크롤 스프라이트 키트
- 20. EXC_BAD_ACCESS 스프라이트 키트
- 21. 스프라이트 키트 및 colorWithPatternImage
- 22. 스프라이트 키트 iAdBanner 만들기
- 23. 스프라이트 키트 충돌이 작동하지 않습니다.
- 24. 초보자 신속한 스프라이트 키트 - 노드 충돌 감지 도움말 (SKPhysicsContact)
- 25. swift : 스프라이트 키트 충돌 및 비트 마스크가 감지되지 않습니다.
- 26. 왼쪽 및 오른쪽 화면 가장자리 만있는 스프라이트 키트 충돌 감지
- 27. 스프라이트 키트 - 올바른 충돌 접점에서 물리 물체를 쉬기
- 28. 스프라이트 키트 - 스프라이트 제스처의 벡터 결정
- 29. 스프라이트 충돌
- 30. 스프라이트 충돌
+ (SKPhysicsBody *) bodyWithPolygonFromPath : (CGPathRef) path;를 사용할 수 있습니다. 그래서 네, 가능합니다, 프레임 워크 방법을보십시오. – Roecrew