unityおぼえがき2

■Physics.Raycast()で戻ってくる値

hit.point  座標
hit.normal  面の角度
hit.distance 距離
hit.collider コリジョン情報

var hit : RaycastHit;
Physics.Raycast(origin, direction, hit,distance,layerMask);
if (hit.collider.gameObject.tag=="Player") {}

layerMaskは32ビットのマスク。1<<9で9番のレイヤーを指定。~(1<<9)なら9番以外全部を指定。
複数指定したい場合は(1<<9)||(1<<10)のようにorで取る。

unityおぼえがき

自分のためのメモです。

■CharacterControllerはCharacterController.Moveを実行したときにCollisionに当たった方向としてCollisionFlags.CollidedXxxxxを返す。

  • CollidedAbove 上
  • CollidedSides 横
  • CollidedBelow 下
  • CollidedNone
collisionFlags = controller.Move(velocity * Time.deltaTime);
if (collisionFlags == CollisionFlags.CollidedAbove) {}

ビットフラグなので&で取れば斜めも判定できる。



■一定時間のカウンターはTime.timeを利用したらいい。

if (Time.time > nextTime) 処理;
nextTime = Time.time + second;

まぁそりゃそうだ。



■物体を回し続けたいときはtransform.Rotateを使う。

transform.Rotate(0,1,0);

tranceform.rotationだと途中で止まる。



■一定範囲で繰り返す数値はMathf.Repeatで取得するのが便利。

Mathf.Repeat(Time.time ,100)

こういうの調べるのがめんどくさくてカウンタをifで回しちゃいがちだけど無駄。