SoftwareDesign3月号のARKit特集を読んで
概要
- 出版社/メーカー: 技術評論社
- 発売日: 2018/02/17
- メディア: 雑誌
- この商品を含むブログ (1件) を見る
ARKit使って現実世界に猫を呼び出すアプリを一緒に作っていくお話が掲載されています。
すごい丁寧で分かりやすいし、作り方を一通り学びつつ、Unityの操作も学べて大変良い連続企画です。
Unity初心者なので、なんでなんだろうって思ったポイントをメモっておきます。
最初全く分からなかったのは2月号の内積で角度判定するやつ。
数式をかけるようになったらいつか書きたい。
環境
- Unity
- MonoDevelop
- UnityARKitPlugin
- Asset
Kitten
のAssetがなくなっていた(3月号までではAssetStoreからDLできるとあった)- 公式githubから入手できた!!(4月号で捕捉されてた。ありがたし)
分からなかったこと
BallControl.cs
で
Ray ray = Camera.main.ScreenPointToRay(pos); RaycastHit hit = new RaycastHit(); if(Physics.Raycast(ray, out hit) == false || hit.rigidbody == null){ ・・・ }
という部分。
Ray
rayはある点から始まり、ある方向への無限の線。
// コンストラクタ // originがある点, directionが方向 public Ray(Vector3 origin, Vector3 direction);
Camera.ScreenPointToRay(pos);
- カメラのnear planeからpositionまでのワールドスペースのrayを返す。
- posはここでは触った点
- カメラから触った点までの3次元空間でのRayを返している
RaycastHit
- Raycastから情報を得るために使う構造体。
- 情報を入れ込むために
new
で箱を作る。
- 情報を入れ込むために
- RaycastHit.rigidbody
- ぶつかったcolliderのrigidbody
Physics.Raycast
Physics.Raycast(ray, out hit) == false
- 引数のRayが何かcolliderと交わった場合、trueを返し、引数の
hit
、つまりRaycastHit型のhitに、ぶつかった場所の情報が入る。 - Rayが何もぶつからない場合、falseを返す。
結局
タッチした先にcollider付きのオブジェクトがない場合と、
collider付きのオブジェクトがあってもrigidbody付いてなかったらOK。
今回猫にColliderとrigidbodyを付けたから、
タッチした先に猫がいたら反応しない?のかな。
やってみる
(MacBookAirでやっていてbuildに大変手間取っています。)