2013/10/14(月) [n年前の日記]
#1 [unity] 地形アタリでハマり中
Raycast を使って、空中に浮いてる足場に、真下からジャンプして乗れる・飛び降りることはできるようになったのだけど。
壁つかまりの処理を書いて高いところに登ってそこからピョーンと飛び降りてみたら、地面を突き抜けてどこまでも永遠に落下していく状態に。たぶんどこかでそうなると思った…。ありがちなバグ…。
丸一日、あーでもないこーでもないと試行錯誤。結局、y方向の速度を Raycast に渡す長さに反映してみたら解決できた…ような気がするけど、全く自信無し。まだどこかですり抜けてしまいそうな気もする。
アタリ判定に使うメッシュオブジェクトのポリゴン間に隙間があったりしないのかな、その隙間で Raycast しちゃう時があったらとんでもないことになりそうだな、という不安も。大昔、某ゲームを作ってた際に、それでハマったことがあったような記憶もあって…。何度も何度も地形にガンガンぶつかってると、そのうちポリゴンとポリゴンの接続辺に向けて自機の座標がどんどん補正されていって、最後にはポリゴン間の隙間からするっと抜けて無限に広がる謎の空間へと旅立ってしまう、みたいな。
アレってどうやって解決したのだったか…。自分、3DCGソフトからデータをエクスポートするスクリプトを書く担当だったから、実機側でどうやって解決したのか今一つ分かってなくて…。ポリゴンとアタリ判定する際に、ポリゴンを一回り大きく変更してからアタリ判定するようにしたのだったか…? それともアタリ判定するための線分を増やしたのだったか…? そういう感じの会話をしたような気もするのだけど、かなり昔の話だから、もう覚えてない…。
それはともかく、壁つかまりもできたから、今度は天井ぶら下がりも書いてみたり。しかしこれがまた…。何かの拍子にぺろんと剥がれて落ちていく。
地面の上や天井の下で横移動をする時も問題が。下り坂を進んでいくと、
壁つかまりの処理を書いて高いところに登ってそこからピョーンと飛び降りてみたら、地面を突き抜けてどこまでも永遠に落下していく状態に。たぶんどこかでそうなると思った…。ありがちなバグ…。
丸一日、あーでもないこーでもないと試行錯誤。結局、y方向の速度を Raycast に渡す長さに反映してみたら解決できた…ような気がするけど、全く自信無し。まだどこかですり抜けてしまいそうな気もする。
アタリ判定に使うメッシュオブジェクトのポリゴン間に隙間があったりしないのかな、その隙間で Raycast しちゃう時があったらとんでもないことになりそうだな、という不安も。大昔、某ゲームを作ってた際に、それでハマったことがあったような記憶もあって…。何度も何度も地形にガンガンぶつかってると、そのうちポリゴンとポリゴンの接続辺に向けて自機の座標がどんどん補正されていって、最後にはポリゴン間の隙間からするっと抜けて無限に広がる謎の空間へと旅立ってしまう、みたいな。
アレってどうやって解決したのだったか…。自分、3DCGソフトからデータをエクスポートするスクリプトを書く担当だったから、実機側でどうやって解決したのか今一つ分かってなくて…。ポリゴンとアタリ判定する際に、ポリゴンを一回り大きく変更してからアタリ判定するようにしたのだったか…? それともアタリ判定するための線分を増やしたのだったか…? そういう感じの会話をしたような気もするのだけど、かなり昔の話だから、もう覚えてない…。
それはともかく、壁つかまりもできたから、今度は天井ぶら下がりも書いてみたり。しかしこれがまた…。何かの拍子にぺろんと剥がれて落ちていく。
地面の上や天井の下で横移動をする時も問題が。下り坂を進んでいくと、
横に動く → 足場が無くなって宙に浮く → 着地する → 横に動く → 足場が無くなって宙に浮く → 着地する、てな状態を延々と繰り返し、ピョンコピョンコと動いてしまって。本当は、足元にあるポリゴンの傾きを、プレイヤーキャラの進む方向に反映させないといけないのだろうけど…。まあ、地形アタリと交差判定する距離を伸ばして、無理矢理地形ポリゴンとぶつけて無理矢理補正する、という手もあるだろうけど…。
[ ツッコむ ]
以上です。