我正在用Xcode的spritekit構建遊戲。它是一款平臺遊戲,現在它可以與平坦的地面部件配合使用。我想知道是否可以忽略png中碰撞的透明度。也就是說,如果我有一個曲面地板和填充槽的透明度的地面部分,我可以讓玩家走過曲線而不是覆蓋整個東西的方形邊界框嗎?我能找到的唯一例子就是Gamemaker GML語言,您可以執行「精確」衝突,從而圖像中的空白空間不會被視爲精靈的一部分。如有必要,我可以提供代碼,但這似乎更像是一個概念性問題。在此先感謝sprite套件碰撞:忽略透明度?
回答
嘿是這個在蘋果文檔提供了一個簡單的解決方案。
SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"Spaceship"];
sprite.physicsBody = [SKPhysicsBody bodyWithTexture:sprite.texture size:sprite.texture.size];
這創建了一個圍繞紋理物理路徑的物理體。
還要注意的是bodyWithTexture:尺寸:只在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
這一切都在你如何實例有問題的節點的physicsBody。
node.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:node.size];
可能是製作physicsBody的最簡單,最常用的方法,但也將創造您在上面標識的問題,因爲,對於所有的碰撞目的,該節點是一個矩形。
請查看the documentation for SKPhysicsBody以查看可用的其他選項。 PolygonFromPath和BodyWithBodies可能是最適合你所做的事情的。
http://dazchong.com/spritekit/是一個很好的工具,以幫助使CGPaths多邊形physicsBodies。 – 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. Java 2D-實際玩家碰撞檢測|忽略透明度
- 2. 忽略透明零件的2D碰撞檢測
- 3. Sprite套件中的碰撞檢測Swift
- 4. Sprite套件中的碰撞檢測
- 5. Pygame Sprite碰撞
- 6. Pygame:如何忽略碰撞
- 7. sprite碰撞cocos2d。每幀碰撞
- 8. Sprite Kit碰撞多重碰撞
- 9. pygame sprite牆碰撞
- 10. 如何忽略JFrame不透明度?
- 11. CSS透明度忽略過渡時間
- 12. 保存NSView表示忽略透明度
- 13. sprite與子sprite的碰撞檢測
- 14. pygame sprite碰撞左邊
- 15. Sprite與矩形碰撞
- 16. Sprite Kit檢測碰撞?
- 17. Sprite Kit碰撞錯誤 - Swift
- 18. cocos2d sprite碰撞檢測
- 19. 碰撞檢測Java 2D Sprite
- 20. 如何忽略一些Tkinter碰撞?
- 21. 忽略Box2d中的物體碰撞(iphone)
- 22. 忽略pacman遊戲中的「碰撞」
- 23. Cocos2d,旋轉(透明)精靈碰撞
- 24. SpriteKit碰撞檢測與透明圖像
- 25. 檢測透明UIImageviews之間的碰撞
- 26. 在swift 3 sprite套件中發生碰撞Xcode 8
- 27. iOS Sprite套件 - 碰撞時扭曲身體
- 28. 如何檢測sprite套件中的碰撞?
- 29. 具有透明度的UI元素的碰撞檢測
- 30. 忽略透明圖片
您可以使用+(SKPhysicsBody *)bodyWithPolygonFromPath:(CGPathRef)路徑;.所以是的,這是可能的,看看框架的方法。 – Roecrew