iOS Game模板碰撞檢測的一些細節

來源:互聯網
上載者:User

   我們把需要檢測碰撞的物理設定物理體(以下我們把這個物理體稱作xx)

  xx.physicsBody=SKPhysicsBody(rectangleOfSize:CGSize(x:100,y:100))

  然後給這個物理體設定一個標識(BitMaskType是自己建立的一個類)

  xx.physicsBody?.categoryBitMask=BitMaskType.xx

  最後設定會發生碰撞的物理(比如響應與yy發生碰撞的事件)

  xx.physicsBody?.contactTestBitMask=BitMaskType.yy

  最後添加代碼

  func didBeginContact(contact: SKPhysicsContact) {

  println("發生碰撞")

  }

  我們可以發現的確發生了碰撞(以上部分粗略描述,若有疑問請自行百度)

  有時候我們會發現兩個物理題還未碰撞,但是系統就已經響應了碰撞事件,這個時候我們不妨將物理體的size設定的相對小一些。

  有的時候兩個物理體明明已經發生碰撞了,但是系統並未響應碰撞事件,這又是為什麼呢?

  請注意我們的第一句代碼,也就是設定物理體大小的那一句,在這一句中我們設定了一個100*100的物理體,但是我們並未說明中心點,而預設的center為CGPoint(0,0).

  如下圖顯示:

  紅色的正方形表示你想要建立物理體,而事實上系統建立的物理體則是黃色的正方形。這個物理體在螢幕中並不顯示,但事實上是這個物理體在發生碰撞。為什麼會發生這樣的情況?原因是Xcode預設的以座標的左下角為中心建立了一個100*100的正方形。為瞭解決這個問題,我們修改建立物理體的代碼。

  xx.physicsBody=SKPhysicsBody(rectangleOfSize:CGSize(x:100,y:100),center:CGPoint(x:0.5, y: 0.5))

  好的在上訴代碼中我們以座標(50,50)為中興建立了一個100*100的正方形,也就是我們想象中的紅色正方形。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.