B 45-プレイヤーの物理的な問題を修復する
//出所はゴールドメタルの講座!
//了解:最初から対象物のfreeze positionをチェックすると、
重力は適用されません.
To do Listの外部衝突でプレイヤーが回転していることが分かった.
今日はこの問題を改めましょう. ハンマーは、総vsプレイヤーの衝突を防止するが、取得しなければならない. 弾殻vsプレイヤーの物理処理をキャンセルします. 壁衝突防止:rayを使用します. FreezeRotation関数を作成します.
物理回転数をゼロにして、自転現象を解消します.
=>リチャードボディを設置して回転も防いでいるのではないかと思います.
実験をしましょう.
これは車にぶつかって回転したときに転んだ様子です.
コードを適用して再実行して実験を行う.
-適用されたとしても、転ぶ…上のフリーサイクルに設定するようです.
コンフリクトレイヤーの設定
競合を設定するレイヤーを追加します.
上に設置された4つのフリーカーにlayerを設置
プレイヤーはプレイヤー/床は床/弾殻は弾殻/弾は弾
そしてプロジェクト設定で物理に行きましょう~
≪レイヤー競合リスト|Layer Collision List|oem_src≫:レイヤー間の競合を設定します.
上は私が直接設定した値が衝突しているかどうかの設定です.
だから、「BulletCase」/「弾殻」なら、
残りは衝突を処理しないという意味だ.
=>再度運転し、発砲し、その後弾殻を通過し、以前とは異なる衝突処理が行われていないことが確認できます!
遊ぶときに知っていることレイヤーを銃にセットし、プレイヤーと
衝突を起こさせないようにしてみました.でもそうすると銃も持てない.
トリガ動作自体が物理的な動作であるため,レイヤ設定の影響を受ける可能性がある.
海達問題は異なる程度の解決が必要らしい.
プレイヤーが壁に突き進むと、壁を突き刺すという問題があります.
Debug.DrawRay関数を使用して...コードを追加し、実行後に確認します.
//3番目のパラメータのデフォルト値は白です.
こうやって出てきました!このレーザーを利用しましょう.
Physics.Raycast関数を使用します.
move関数がここで使用されている場合...問題が発生する.
壁にぶつかると、キャラクタが回転できないという問題が発生します.
どこにいるの??ここに追加して、回転台に回転して、移動を阻止します!
壁レイヤを追加して実行すると、壁の前から前に伸びます.
アイテム競合の削除
プレイヤーがアイテムを取得せずに衝突すると、プレイヤーは回転し、
道具が倒れそうだ!
コードを追加します.
物理を担当する衝突機アセンブリはisTriggerが検査した衝突機の上にある必要があります.
MoveUpを押して上に置きますこのときOpenPrefabモードで行いましょう
なぜ2つの変数を使用しますか?
is運動学は物理を使用しないことを示す(trueでなければならない).
衝突とは、衝突ポートを使用しないことです.
collision.enabledがfalseでない場合、競合する相手は物理的に処理され、処理も必要です.
=>地面に衝突すると重力の効果が完了するので、物の物理は不要になります.
//了解:最初から対象物のfreeze positionをチェックすると、
重力は適用されません.
To do List
今日はこの問題を改めましょう.
自動回転防止
物理回転数をゼロにして、自転現象を解消します.
=>リチャードボディを設置して回転も防いでいるのではないかと思います.
実験をしましょう.
これは車にぶつかって回転したときに転んだ様子です.
-適用されたとしても、転ぶ…上のフリーサイクルに設定するようです.
void FreezeRotation()
{
//물리 회전속도를 0으로 만들어서 스스로 도는 현상을 제거함.
rigid.angularVelocity = Vector3.zero;
}
//0311 추가함.
void FixedUpdate()
{
FreezeRotation();
}
コンフリクトレイヤーの設定
:プレイヤーが弾壳などにぶつかると、プレイヤーは回転します.
弾殻とプレイヤーが衝突しないように物理層を設定します!
競合を設定するレイヤーを追加します.
上に設置された4つのフリーカーにlayerを設置
プレイヤーはプレイヤー/床は床/弾殻は弾殻/弾は弾
そしてプロジェクト設定で物理に行きましょう~
≪レイヤー競合リスト|Layer Collision List|oem_src≫:レイヤー間の競合を設定します.
上は私が直接設定した値が衝突しているかどうかの設定です.
だから、「BulletCase」/「弾殻」なら、
残りは衝突を処理しないという意味だ.
=>再度運転し、発砲し、その後弾殻を通過し、以前とは異なる衝突処理が行われていないことが確認できます!
遊ぶときに知っていることレイヤーを銃にセットし、プレイヤーと
衝突を起こさせないようにしてみました.でもそうすると銃も持てない.
トリガ動作自体が物理的な動作であるため,レイヤ設定の影響を受ける可能性がある.
海達問題は異なる程度の解決が必要らしい.
壁の衝突を防ぐ
プレイヤーが壁に突き進むと、壁を突き刺すという問題があります.
Debug.DrawRay関数を使用して...コードを追加し、実行後に確認します.
//3番目のパラメータのデフォルト値は白です.
こうやって出てきました!このレーザーを利用しましょう.
Physics.Raycast関数を使用します.
move関数がここで使用されている場合...問題が発生する.
壁にぶつかると、キャラクタが回転できないという問題が発生します.
どこにいるの??ここに追加して、回転台に回転して、移動を阻止します!
壁レイヤを追加して実行すると、壁の前から前に伸びます.
アイテム競合の削除
=>プレイヤーと衝突するたびに更新されるのではなく、重力処理後の物理効果
不要なので、床とぶつかるときは、物理的効果を消すようにしましょう!
プレイヤーがアイテムを取得せずに衝突すると、プレイヤーは回転し、
道具が倒れそうだ!
コードを追加します.
物理を担当する衝突機アセンブリはisTriggerが検査した衝突機の上にある必要があります.
MoveUpを押して上に置きますこのときOpenPrefabモードで行いましょう
なぜ2つの変数を使用しますか?
is運動学は物理を使用しないことを示す(trueでなければならない).
衝突とは、衝突ポートを使用しないことです.
collision.enabledがfalseでない場合、競合する相手は物理的に処理され、処理も必要です.
=>地面に衝突すると重力の効果が完了するので、物の物理は不要になります.
Reference
この問題について(B 45-プレイヤーの物理的な問題を修復する), 我々は、より多くの情報をここで見つけました https://velog.io/@kwt0124/B45-플레이어-물리문제-고치기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol