koshira
@koshira

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【Unity】機能として用意されているメソッドの詳細情報を知る方法

解決したいこと

タイトルの通りですが、機能として用意されているメソッドの処理をに詳細に知る方法が知りたいです。
そもそも知ることができるのかすらわかっていません。

問題に直面した経緯

オブジェクトのpositionの値を直接書き込む移動法を使用するとオブジェクト同士の当たり判定をとっていても、めり込んでしまいます。(値の書き込みはワープの連続であるためと理解しています。)
ですが、RigidbodyのAddforceなどを使うと、めり込まずにカチッと止まります。
どちらでもゲーム上での移動は座標の更新であると認識しており、どこまで行っても結局はワープの連続でしか移動できないのではと思っています。
それでも挙動に違いが出るので、どのように処理しているのか詳しく見たいと思いました。

自分で調べたこと

機能の理解不足からくるケアレスミスを避けるため、Rigidbodyの機能でCollision DetectionをContinuousにすることで連続的に調べてくれること、Box Colliderなどにしか対応していないことを調べました。

分かっていること

どうすればめり込みを避けれるかはわかっています。
例として出しただけで、めり込みを解決したいのではなくあくまで処理を詳しく調べる方法があるのか、あるとしたらどうすればよいのかが知りたいです。

0

1Answer

一番詳しいのは公式の「Unity Scripting API」でググって出てくるやつだと思います。
余談として、もしかすると質問の意図から外れるかもしれませんが、その問題はメソッド詳細情報を知って解決できるものではないと思います。
簡単に言うとpositionは座標を強制的に数値の代入で塗り替えます、それに対し、Addforceは座標ではなく、移動ベクトルを与えます、移動ベクトルは物理エンジンが物理演算によって座標に変換するため、物理的な接触を実現でき、めり込みにくくなるわけです。
ここらへんは、ゲームエンジンがどう動いているかなどを上辺だけでも知っておかないとわかりにくいのではないかと思います。

0Like

Comments

  1. @koshira

    Questioner

    回答ありがとうございます!

    うーむ、やはり私の理解度が低いのかなと感じます。

    同じ速度で動くオブジェクトがあったらどんな書き方であっても、最終的には内部の数値を書き換えているのだから同じなのではないか、と思っているのですがそこがすでに間違えているのでしょうか。
    移動ベクトルは物理エンジンが物理演算によって座標に変換する。とありますがやはり座標には変換するわけですよね。。
    移動先の座標を調べて移動できるか判定しできなければ移動しない。としたらめり込まなくなるのは理解できるので、そういったところで違いがあるのかと思いメソッドが分かれば理解できるのかなといったところでした。

    分からないことは分かるようになればいいとは思っていますが、分からないことは分からないのも事実であることも理解しています。
    分かるようになるまで問答を続けるつもりもないので、「そう、そこを理解しようと思ったら言ったようにエンジンの仕組みを理解すればいいんだよ」というのであれば言っていただけたら納得できます!

  2. やはり誰しも最初は何もわからないので、仕方のないことだと思います。
    でも、わからないことを理解しようとする精神さえあれば、どんどん上達していくと思います。
    ちなみに私の語彙力が足りなくて、申し訳なかったのですが、positionとaddforceのイメージとしては、瞬間移動能力と加速能力の違いみたいなもので、positionは座標そのものなので値を代入するとオブジェクトの座標情報がそれに変わり、addforceは移動ベクトルとして座標を変化させるみたいな。

  3. @koshira

    Questioner

    続けての回答ありがとうございます!

    むむ~、おっしゃっていることは分かるのですが、結果が変わるということへの紐づけが私の中ではまだできません。。

    これ以上はタイトルとかけ離れてしまうし、私の中でも一度整理したいのでここで〆とさせていただきます。

    基本的に質問する立場なので大変恐縮ですが、機会があればまたよろしくお願いいたします。

Your answer might help someone💌