テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】指定したCollider2Dへの最短座標を求める

f:id:tsubaki_t1:20180409021615g:plain

今回は指定したCollider2Dへの最短座標を求める機能について紹介します。

 

 

指定したColliderへの最短距離の問題

オブジェクトから指定したColliderへの最短距離を求めようと思った時、これが実は意外と面倒な事になります。

例えば下のようにTargetからパンダのColliderへの最短距離を求める時、Colliderの形状によって最短距離は変わってしまいます。大雑把な計算で良いならば中心点からRaycastでも撃てば十分なのですが、地形に沿って…のような場合には余り上手くありません。

f:id:tsubaki_t1:20180409103111j:plain

 

指定したColliderへの最短距離を求める

指定したColliderへの最短距離を求めます。
これはrigidbody2D.Distanceが使えます。

 

gist.github.com

これで対象のColliderとの距離が求められます。

f:id:tsubaki_t1:20180409023437j:plain

 

それで、これは何に使えるのかな?

さて、コレを紹介して疑問に思うことそれは「コレが何に使えるのか」という点です。とりあえずAPIが目について使い方がパっと分からなかったのでサンプルコード込で紹介しましたが、これの用途は今ひとつ分かりません。

 

引数に対象のColliderを要求するので、直近のColliderを検索…みたいな用途には使用できません。
貫通しないように移動先のColliderを~…みたいな用途であれば、移動ベクトル見てRaycat飛ばすのが正解です。
かと言って、Colliderの形状で最も近い所を検出する必要のあるような項目は…うーん。

 

強いて思いついたのを上げるなら、溶岩ステージ等で溶岩のColliderに近づくと熱が上がっていき一定でダメージ…みたいな感じでしょうか。

f:id:tsubaki_t1:20180409103711j:plain

もしくは近づくと電流が流れる仕組みで、触れる前にビビビーみたいな(以前、子ども科学館で、こんな感じのを見た気がする)

f:id:tsubaki_t1:20180409104500j:plain

 

と中々に用途の難しい機能です。
…まぁ、誰かがきっと何かに使うでしょう(結論

関連

コレ以外の何の役に立つのかよく分からんシリーズ

tsubakit1.hateblo.jp