Tankが永遠に落下してしまう | Unity Forum | Tech Stadium Forum

Tankが永遠に落下してしまう
 
通知
すべてクリア

Tankが永遠に落下してしまう  

  RSS

Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
30/04/2023 3:16 pm  

TANKS! チュートリアルの最終課題、新機能の実装。

タンクが爆風で空に舞い上がるエフェクトを追加したのですが、移動可能軸にyを含めた為、3dモデルの表面の地形を突き破る形でタンクが移動したときに永遠に下に落下してしまうという現象が起こるようになりました。

プレーヤーの操作感を良くしようとタンクのスピードを2倍に変更したことも、一因になっているかもしれません。

タンクが地形にめり込まないようにするには、どうしたら良いでしょうか?


引用
Teacher
(@admin)
メンバー Admin
結合: 5年前
投稿: 1318
30/04/2023 3:16 pm  

すり抜けの防止策の一例はフォーラムにあります。
https://develop.hateblo.jp/entry/unity-object-surinuke

またTanksのフィールドの床のコライダはかなり薄いので(場所はLevelArt>Ground>GroundPanel)、BoxColliderのような分厚いコライダを床にするという方法もあります。


返信引用
Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
30/04/2023 3:17 pm  

ご教示ありがとうございます! 

RigitbodyのColision Detectionを「Continuos」にする、Timeの取得間隔を速くする、といった情報がとても参考になりました。

これである程度は建物の壁や外壁を貫通しづらくなったのですが、それでも貫通したときにはやはり同じように落下してしまいます。

(LevelArtの底面にBOXコライダーを張り付けても、なぜか落下の現象が起こってしまいます)岩や小オブジェクトはどんな速度でぶつかっても弾かれるのに、なぜか一部の建物の壁とフィールドの外壁だけは貫通してしまいます。

タンクの速度を下げればいいのかもしれませんが、そうすると快適性が損なわれるので悩ましいところですね…


返信引用
Teacher
(@admin)
メンバー Admin
結合: 5年前
投稿: 1318
30/04/2023 3:17 pm  

取得間隔をいじったり、落下の速度制限を行って「バグが起こらない」処理と平行して
それでもバグが起きてしまった時のために「バグの修正」の処理を後ろ盾に置く手もあります。

例えば貫通してしまった時、「Y座標が〇になったら初期のY座標に戻し落下速度を0にする」「RollaBallで使ったようなDangerWallを配置しぶつかったら(以下同様)」のような仕様があれば、バグが起こってしまってもゲームを続行させることができます。


返信引用
Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
30/04/2023 3:18 pm  

ご教示ありがとうございます! 大変参考になりました。

最終的には以下のような、「貫通してしまった時に座標を10だけマイナスする」スクリプトを作り、問題を解決いたしました。


返信引用
共有:
タイトルとURLをコピーしました