我想讓兩個精靈在精靈套件中彼此碰撞時消失。蘋果文檔中的例子並不能真正幫助我,所以如果你能解釋它,那會很好。 :)如何在sprite套件中發生2個sprites相撞時執行動作?
1
A
回答
0
好的,所以你需要做幾件事情。
我會假設你有兩個精靈......
SKSpriteNode *sprite1;
SKSpriteNode *sprite2;
這些正在飛來飛去場景,並可能會或可能不會與對方接觸。
所以,你需要設置一切,以啓用命中測試和回調。
首先,添加物理機構精靈......
sprite1.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:10];
sprite2.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(10, 10)];
// this is a couple of examples, you'll have to set yours up to match the sprite size, shapes
接下來,您需要添加類別的精靈。這使物理引擎什麼類型的機構,它的一些資料...
sprite1.physicsBody.categoryBitMask = 1 << 0;
sprite2.physicsBody.categoryBitMask = 1 << 1;
// again this is an example. You probably want to put these in an NS_OPTIONS typedef.
然後,你需要告訴你,你被告知有關其接觸物理引擎。在這種情況下,當sprite1(1 < < 0)與sprite2(1 < < 1)接觸時,你會被告知。
所以......
sprite1.physicsBody.contactTestBitMask = 1 << 1; // it will test for contact against sprite 2
sprite2.physicsBody.contactTestBitMask = 1 << 0; // test against sprite 1.
現在在你的場景,你需要採取<SKPhysicsContactDelegate>
和設置場景是物理學代表...
self.physicsWorld.contactDelegate = self;
,然後創建方法..
- (void)didBeginContact:(SKPhysicsContact *)contact
{
// these two physics bodies have come into contact!
SKSpriteNode *firstContactNode = contact.bodyA.node;
SKSpriteNode *secondContactNode = contact.bodyB.node;
// now remove them...
[firstContactNode removeFromParent];
[secondContactNode removeFromParent];
}
0
SKAction* _vanishAction =[SKAction fadeOutWithDuration: 1];
[sprite runAction:_vanishAction completion:^(void){
[sprite removeFromParent];
}];
相關問題
- 1. 在swift 3 sprite套件中發生碰撞Xcode 8
- 2. Sprite Kit碰撞 - 在發生碰撞的實例上執行實例方法
- 3. Sprite套件中的碰撞檢測Swift
- 4. Sprite套件中的碰撞檢測
- 5. 在sprite工具包中發生碰撞時停止對象
- 6. 運行2個CCSequence的2 Sprite的第二個精靈不會執行動作
- 7. Python - Pygame。如何在Sprites碰撞時禁用/根鼠標移動?
- 8. 如何檢測sprite套件中的碰撞?
- 9. sprite套件碰撞:忽略透明度?
- 10. 如何在selenium中執行套件後發送自動郵件
- 11. Sprite Kit中同時發生兩次或多次碰撞
- 12. Swift&Sprite-Kit:如何將Sprites旋轉到碰撞設定的方向?
- 13. iOS Sprite套件 - 碰撞時扭曲身體
- 14. 如何在使用Cocos2d碰撞檢測時引用sprites?
- 15. sprite撞牆或另一個sprite
- 16. Rhapsody中的嵌套執行發生
- 17. CSS Sprites沒有懸停在執行動作
- 18. 如何改變發生碰撞時
- 19. Pygame Sprite碰撞
- 20. 如何在shell中執行測試時發生超時
- 21. 發生錯誤時執行操作RxJava
- 22. PyGame:在同一個列表中的兩個Sprites碰撞
- 23. 如何將一個動作應用於SpriteKit中的多個Sprites?
- 24. 在另一個對象上滑動時發生碰撞
- 25. 在硒中執行測試套件時可能發生Java異常
- 26. 如何在單獨的Sprite結束後更改Sprites?
- 27. Sprite套件在失去生命時暫停遊戲
- 28. Javascript:如何在多個事件發生後執行代碼?
- 29. 碰撞發生時,從nsuserdefaults
- 30. 如果在Git中同時執行多個操作會發生什麼?
謝謝,真的很有幫助! – user3394385
不用擔心,樂意幫忙:) – Fogmeister