4.碰撞檢測
碰撞概述:
遊戲世界裏,遊戲對象不能作出如同在真實世界裏的物理運動效果。對於大部分遊戲來講,都要爲其添加物理系統,讓其能夠模擬真實世界發生的物理運動。可是在這個打飛機遊戲Demo中,是用腳本代碼來實現對碰撞事件發生的檢測的,下文將詳細介紹實現的方法。ide
碰撞檢測原理:
爲物體建立子空Actor,做爲物體包裝盒用於對碰撞事件發生的檢測,當包圍盒直接發生交叉、包含等關係時候,斷定觸發碰撞事件,產生相應碰撞效果,流程圖如圖5-1所示。函數
圖5-1
實現方法:
步驟1:網站
碰撞檢測體包圍盒的製做。在場景中Create(建立)->Empty Object(空物體,即空Actor),將空Actor拖動到物體上,成爲其子空Actor。spa
步驟2:3d
檢測碰撞事件是否發生,相關代碼以下所示。code
01 |
public void Tick ( float elapseTime) |
04 |
for ( int i = 0; i < Colliders.Count; i++) |
06 |
for ( int j = i+1; j < Colliders.Count; j++) |
08 |
BoundingBox bb1 = Colliders[i].ColliderActor.WorldBoundingBox; |
09 |
BoundingBox bb2 = Colliders[j].ColliderActor.WorldBoundingBox; |
10 |
ClipStatus cs1 = bb1.Contains(bb2); |
11 |
ClipStatus cs2 = bb2.Contains(bb1); |
13 |
if (cs1 == ClipStatus.Intersecting || cs2 == ClipStatus.Intersecting ) |
16 |
if (Colliders[j].ColliderActor.IsActive) |
18 |
Colliders[i].Call(Colliders[j].ColliderActor); |
20 |
if (Colliders[i].ColliderActor.IsActive) |
22 |
Colliders[j].Call(Colliders[i].ColliderActor); |
步驟3:對象
碰撞結果。打飛機遊戲Demo中,設定了兩種碰撞結果。子彈擊中敵人:敵人死亡,計分;敵人擊中角色:角色死亡,遊戲結束。遊戲
引擎官方網站:http://www.genesis-3d.com.cn/事件
官方論壇:http://bbs.9tech.cn/genesis-3d/ip
官方千人大羣:59113309 135439306
YY頻道-遊戲開發大講堂(徹底免費,按期開課):51735288
Genesis-3D開源遊戲引擎:遊戲起源,皆因有我!!!