Apple LLVM 8.0 clang: error: no such file or directory:xxx/Prefix.pch がxcodeで出た時


Apple LLVM 8.0 clang: error: no such file or directory:xxx/Prefix.pch

Unityでビルドするとたまに出る。Build settingのPrefix Headerを見るとClasses/Prefix.pchとなってるけど、実際には存在しないので、そういう時は他のUnityでビルドしたプロジェクトからコピペして対処すればOK

iOS/Androidで最高にリアルな3D表示を実現できた

ミニチュアストーリーズ」でスマートフォンでリアルの3D表現を追求して、そこからさらに精度をあげて、かつ軽量なデータを実現する手法がだいたいわかってきた。

まだ改善の余地はあるけど、このレベルでスマートフォンで表示できるのは実用レベルになってきたと思う。ちなみに上のドーナッツはUnityで作ってGalaxy S6で操作しているもの。下のミニチュアストーリーズと比べてみると面白いです。

Unity Listからforeachを使ってremoveする


foreach(Class item in Lists){
 if(item.id == id){ 
  Lists.remove(item);
 }
}

こんなかんじでやると、

InvalidOperationException: Collection was modified; enumeration operation may not execute.

とエラーになるので、


List<Class> TmpList = Lists;
foreach(Class item in Lists){
 TmpList.Add(item );
}

foreach(Class item in TmpList){
 if(item.id == id){ 
  Lists.remove(item);
 }
}

こうしてやる

Unity StreamingAssetsからファイルを読み出す

Streaming Assets で iOSとAndroidの違いにハマったのでメモ。

string FilePath;
#if UNITY_IPHONE
  FilePath = Application.dataPath + "/Raw/" + filename;
#else
  string fullPath = "jar:file://" + Application.dataPath + "/!/assets/" + filename;
  WWW www = new WWW (fullPath);
    while (!www.isDone) {
  }
  FilePath = Application.persistentDataPath + filename;
  File.WriteAllBytes (toPath,www.bytes);
#endif

iOSはそのままパスからファイル読み込みできるけど、Androidは一度Application.persistentDataPathにコピーしてから開かないといけない。

Unity Export Packageは実機でtagの情報を引き継がない

別のプロジェクトで作ったものを、いったん.unitypackageでエキスポートしたのですが、インポートすると、エディタでは問題なく動くのに、実機転送すると動かなくなる現象があり、むちゃくちゃハマりました。

もとのプロジェクトでつけてたtagがエキスポートすると引き継がれないのですが、エディタ上でプレファブのインスペクタのタグをみると、普通にタグがかかれているため、バグの発見に時間がかかりました。タグはよく使っていたので今後は注意します。

と思ったら引き継がれてました。。。あれ、どこでタグが消えてしまったんだろう。。。

Unity の lookAt を おきかえる

UnityのlookAtは便利ですが、回転をさらに細かく制御しようと思うと難しいので置き換えます。


Rot.transform.LookAt (Vector3.zero);

こうするところを、


Vector3 relative = gameObject.transform.InverseTransformPoint(Vector3.zero);
float angle = Mathf.Atan2(relative.x, relative.z) * Mathf.Rad2Deg;
Rot.transform.localRotation = Quaternion.Euler(0,angle - 90.0f, 0);

こうしてあげると、Vector3.zeroをむきつつ90.0度Y軸回転をできます

VRシューティングゲーム「GCLOPS」をOculus Store for GearVR のギャラリーアプリで公開しました

GCLOPS

先週の「RingNinja」に続いて、GearVR向けのVRシューティングゲーム「GCLOPS」がOculus Storeのギャラリーアプリで公開されました。Oculus Store

半年前にOculus Storeに申請を出して1度リジェクトされて、そのあとApprovedされたにもかかわらず、keys onlyというステータスでストアでの公開はできませんでした。ストア公開されない理由は特に教えてもらえないので謎のままなのです。その後もエネミーのデザインをマッチョにしたり、動画を入れたり、UIを変えたりと、地道なバージョンアップを続けて、ついに12月8日に公開されました!

そもそも2016年1月にあった「Unity VR EXPO Shibuya」に出展しようと、ちょうど1年前くらいに出たばかりのGearVR向けにとりあえず作っていた射撃ゲームを全面改装しました。その射撃ゲームをテストしている姿がはたから見ていると、XMENのサイクリップスに見えたんですよね。360度見渡しながら右手でGEARVRのパッドを触って打つところとか。

GearVRだと移動ができないので、シューティングゲームはどうしても単調になってしまうのですが、そのあたりはアップデートで変えていきたいと思ってます。

それとVRだと広告モデルがまだないので、基本的に有料アプリかアプリ内課金が主流なのですが、このあたりは難しいところですね。やってみないと面白さのわからないVRこそ無料アプリで出して、広告かアプリ内課金をするというのがあっていると思うのですが、アプリ内課金の場合、追加課金をさせるだけのバリューが必要になってくるので、長時間遊べないVRでは悩み所だなと思いました。とりあえず有料アプリとして190円で出してます。

GearVR持ってる人は是非ダウンロードしてみてください。