ことばアルバム

にわかエンジニアのにわか備忘録

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始めたばっかりで分からない!という方に参考になれば幸いです^^