Sample 8は三角形とレイの当たり判定です
CollisionMeshというクラスを利用して当たり判定をとっていきます
まず、変数フィールド内でCollisionMeshの記述をして
初期化します
- CollisionMesh colmesh = new CollisionMesh(Model model);
- このモデルは描画することは無いので、最適化したモデルを使うといいと思います
- (サンプルではそのままのモデルを使っています)
次にCollisionMeshの全ての三角形を得ます
- Triangle[] triangle = CollisionMesh.GetModelTriangle();
これで初期化は終了です
次に、習得した三角形から、当たっている点を得る処理をします
Update処理内で
- CollisionMesh.CheckCollision(Triangle[] triangle, Vector3 Position, Vector3 Direction,out Vector3 HitPosition,out Vector3 HitNormal,out float Dist);
- を記述して、当たっている点を得ます
- Triangle[]には初期化部分で習得した三角形を
- Positionには現在の位置、Directionには向き(床判定の場合Vector3(0,-1,0))
- HitPositionには当たった位置を受け取るVector3
- HitNormalには当たった三角形の法線を受け取るVector3
- Distには距離を受け取るfloatを設定してあげます
実際に使う場合は、Distの距離によってプレイヤーの位置を設定すればいいと思います
コメント