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で回しちゃいがちだけど無駄。