

UnityでRigidBodyを使用せずに壁ずりを再現したいと考えているのですが、  
2点わからないことがあり困っています。壁ずりについて調べたところ  
「進行方向ベクトル」と「衝突点の法線」を使用すれば、  
「壁ずりベクトル」が出せるといことは理解できたのですが、  
・衝突点の法線ベクトルの出し方  
・実際に壁ずりベクトルを出した後にどのように使用すればいいのか  
が分かりません。出来れば計算式をコードで見せていただけるとすごく助かります…


CC BY-SA 3.0
2016-03-23T11:37:43.560
23393
2016-03-24T02:22:57.907
14907
question
unity3d
Unityでの壁ずり実装について質問させていただきます。


まず、衝突判定という面倒な計算を Unity や RigidBody（やCollider）
コンポーネントなどが行っていることをご理解ください。それを使わないということは、同じことを自前で行うことになります。

> ・衝突点の法線ベクトルの出し方

壁と自分との衝突点を算出して、衝突した壁の法線を使います。  
Rigidbodyを使わないとなると Collider や Raycast
も使わないとして、自前で壁の形状（メッシュの頂点や法線データ）を確認しつつ、自分の位置と移動ベクトルから衝突点を検索することになります。衝突判定にはポリゴンと線分の衝突か、2Dであれば線分同士の衝突判定でできると思います。

> ・実際に壁ずりベクトルを出した後にどのように使用すればいいのか

そもそも移動はどうしてるのでしょうか？壁ずりベクトルが算出できたら、その方向に移動すればいいだけです。他に摩擦とかあれば仕様に合わせて計算を追加していきます。

> 出来れば計算式をコードで見せていただけるとすごく助かります

計算式だけを示すことはできません。衝突判定には壁データ（頂点や法線など）へのアクセスが必須であり、まずは壁の形状が把握できなければ衝突判定はできません。


CC BY-SA 3.0
2016-03-24T02:22:57.907
23405
2016-03-24T02:22:57.907
2079
23393
answer