別のオブジェクトの方に向けて、力を加える

もくじ
https://tera1707.com/entry/2022/02/06/144447

やりたいこと

あるオブジェクトから、別のオブジェクトに向けて、力を加えたい。 (あるオブジェクトから、別のオブジェクトに向かうベクトルを取得したい。それをAddForceに与えてやったら、その方向に力を加える、ってことにできそう)

やりかた

下記のようにすると、あるゲームオブジェクトから、別のゲームオブジェクトに向かうベクトルを取れる。

※playerとthisがゲームオブジェクト。

player.transform.position - this.transform.position

これだと、this から、player に向かうベクトルになる。

これを、AddForceに与えると、その向きに力を加えられる。

GetComponent<Rigidbody>().AddForce((player.transform.position - this.transform.position).normalized);

ただし、player.transform.position - this.transform.position は大きさも持っているので、オブジェクトどうしが離れれば離れるほど、大きな力になってしまう。

その場合は、(player.transform.position - this.transform.position).normalizedとすると、大きさが最大1.0のベクトルを取れる。

GetComponent<Rigidbody>().AddForce((player.transform.position - this.transform.position).normalized);