Unity初心者が迷うアイツとアイツの違い
かくいう自分も文句無しのUnity初心者なんですが。。。
いろいろUnityをいじっていて、「あれ?これとこれって似てるけど具体的に何が違うのかな??」ってのが多々あったので、そこをまとめてみました。
rigidbody.velocity と rigidbody.angularVelocity
var vector3 : Vector3 = (5, 0, 0); // 物体に加速度を与える。この例ではx軸方向にむかって進んでいく。(positionが変わる) rigidbody.velocity = vector3; // 物体に回転加速度を与える。この例ではx軸方向への回転を行う。(rotationが変わる) rigidbody.angularVelocity = vector3;
OnCollisionXXX と OnTriggerXXX
// 物体のColliderにのisTriggerのチェックが無い場合の衝突で呼ばれる function OnCollisionEnter(collision : Collision) { // 補足:物体Aと物体Bがぶつかった場合、互いの加速度や質量によって衝突後に別のベクトルに移動する } // 物体のColliderにのisTriggerのチェックが有る場合の衝突で呼ばれる function OnTriggerEnter(collider : Collider) { // 補足:物体Aと物体Bがぶつかった場合、互いにすり抜けていくが座標が重なった判定を取る事が出来る }
rigidbody.AddForce と rigidbody.velocity
var vector3 : Vector3 = (5, 0, 0); // 物体に力を加える。 rigidbody.AddForce(vector3); // 物体に加速度を与える。 rigidbody.velocity = vector3;
ここはちょっとイメージが湧きにくいところかもしれないです。
自分もなかなか分からなかったのですが、AddForceはメソッドであるのに対し、velocityはプロパティであるということを考えるとちょっとイメージが湧きました。
AddForceは指定のベクトルに対し力を加える。(最初は加速度が0なので初動はゆっくりだが、徐々に加速度が増え速度が増す)
velocityは指定のベクトルに向けての加速度を設定する。(摩擦などを考慮せず、いきなり加速度を設定するので、最初からトップスピード)
transform.Rotate と rigidbody.angularVelocity
var vector3 : Vector3 = (5, 0, 0); // 回転をするというよりは向きを変える transform.Rotate(vector3); // 回転を行い、結果として向きが変わる rigidbody.angularVelocity = vector3;
今回は以上とさせていただきます。
自分も結構分からなかったところなので、同じようにUnity始めたばっかりで分からない!という方に参考になれば幸いです^^