Mayaやmaxのfbxファイル迷路をUnityで扱う [iPhone SDK]
いやー「Unity入門」は面白かった。今のところ、これ以外に授業で使える教科書はないくらい。
この本の中で扱っている迷路ではなくて、Mayaやmaxで迷路を自作して入れ替えてみたくなったので早速実行に移す。
まずは、変換の流れやノウハウを蓄積するために、ほとんど同じものを作って入れ替えることに。
どんなCGソフトでもUnityへの流しこみはfbxファイルだから、どのCGソフトが最適か?はあまり関係がない。各人が息をするように作れるのであれば、マイナーなCinema4Dやmodo、Lightwave、Shadeでも何でもいいと思う。
汎用フォーマットであるDXFや3dsなど何らかの手段でとにかくfbxファイルに辿り着くことが大事。
ポリゴンが裏返ったり、Y-upが狂ったりもあると思うけど、様々な3DCGソフトを駆使して目指すことです。
もちろんfbxの書き出しに長けているMayaかmaxが最適と思うけど。あ、XSIもいいですね。
fbxに書き出す時は、不要なものがパッケージされないように、ポリゴンオブジェクトだけにして、カメラやライトは設定しない方がいいですね。
Unityに取り込まれた時にfbxのデータ構造のままになるので、モデリングした時の回転軸などの座標を残しておきたい場合は便利なので、そういった使い方なら別だけど。
しかもUnityへの読み込みって、先にUnity側でプロジェクトを準備した状態にしておき、書き出したfbxファイルをプロジェクトフォルダ内ののアセットフォルダ内に「ファイル操作」でドラッグ&ドロップするだけ。
Unityの画面に戻ると、プロジェクトウィンドウの中にアセット(使用資産)として使えるようになっている。便利!
さて、ここで困ったのは、オブジェクトを入れ替えただけでは、ボールが迷路(私の場合maxで作った方)をすり抜けてしまうこと。
つまり衝突する物体として認識してくれない。はてさて?
それには、空のプレハブを作成して、その中に自分で作ったポリゴンオブジェクトを入れて、そのプレハブをヒエラルキー(画面の構造)に配置したら、そのオブジェクトにrigidbody(+kinematic)や物理マテリアルを設定するということ。
入れ替えただけでOKのはず!なんて、決め込んでいたので、これに気付くまでとにかく苦労。
で、うまく自作迷路で同じように動いたので、あとはいろいろとオリジナルの迷路を作っていこうと算段中。
16個くらいの迷路を作って、クリアタイムを全世界で競うようなiOSアプリなんかがすぐにできそう。(世の中に同じようなものがいっぱいありそうだけどね。)
Unity入門 ~高機能ゲームエンジンによるマルチプラットフォーム開発~
- 作者: 高橋 啓治郎
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2011/10/01
- メディア: 大型本
この本の中で扱っている迷路ではなくて、Mayaやmaxで迷路を自作して入れ替えてみたくなったので早速実行に移す。
まずは、変換の流れやノウハウを蓄積するために、ほとんど同じものを作って入れ替えることに。
どんなCGソフトでもUnityへの流しこみはfbxファイルだから、どのCGソフトが最適か?はあまり関係がない。各人が息をするように作れるのであれば、マイナーなCinema4Dやmodo、Lightwave、Shadeでも何でもいいと思う。
汎用フォーマットであるDXFや3dsなど何らかの手段でとにかくfbxファイルに辿り着くことが大事。
ポリゴンが裏返ったり、Y-upが狂ったりもあると思うけど、様々な3DCGソフトを駆使して目指すことです。
もちろんfbxの書き出しに長けているMayaかmaxが最適と思うけど。あ、XSIもいいですね。
fbxに書き出す時は、不要なものがパッケージされないように、ポリゴンオブジェクトだけにして、カメラやライトは設定しない方がいいですね。
Unityに取り込まれた時にfbxのデータ構造のままになるので、モデリングした時の回転軸などの座標を残しておきたい場合は便利なので、そういった使い方なら別だけど。
しかもUnityへの読み込みって、先にUnity側でプロジェクトを準備した状態にしておき、書き出したfbxファイルをプロジェクトフォルダ内ののアセットフォルダ内に「ファイル操作」でドラッグ&ドロップするだけ。
Unityの画面に戻ると、プロジェクトウィンドウの中にアセット(使用資産)として使えるようになっている。便利!
さて、ここで困ったのは、オブジェクトを入れ替えただけでは、ボールが迷路(私の場合maxで作った方)をすり抜けてしまうこと。
つまり衝突する物体として認識してくれない。はてさて?
それには、空のプレハブを作成して、その中に自分で作ったポリゴンオブジェクトを入れて、そのプレハブをヒエラルキー(画面の構造)に配置したら、そのオブジェクトにrigidbody(+kinematic)や物理マテリアルを設定するということ。
入れ替えただけでOKのはず!なんて、決め込んでいたので、これに気付くまでとにかく苦労。
で、うまく自作迷路で同じように動いたので、あとはいろいろとオリジナルの迷路を作っていこうと算段中。
16個くらいの迷路を作って、クリアタイムを全世界で競うようなiOSアプリなんかがすぐにできそう。(世の中に同じようなものがいっぱいありそうだけどね。)
XCODE 4系で旧OS向けの実機動作する時の注意 [iPhone SDK]
iPadのOSを5系にアップしてしまったら、XCODE3系ではソフトの実機動作確認ができなくなってしまった。
世の中がXCODE4に移行することを拒絶していた時代から、初めての開発ソフトがXCODE4という時代になりつつ在ると実感し、使いにくいながらもXCODE4へ移行することを覚悟。
学校ではアプリ制作をXCODE3で教えているのでダブルインストールした状態を維持しつつ、XCODE4を使い始めていくと、こんな事象が発生。
「古いOSで動いているiPodTouchの2Gでの実機動作ができない?」
2GはiOS4.2までしかアップできないので、旧OSにターゲットなどを合わせるのだが、なかなか手ごわい。で、最後にやって動いたパターンがあったので、メモ記事としてここに記載することに。
まずはXCODE3でプロジェクトのみを作成。
XCODE4でそれを開くと、スナップショットを作って少し改変するよ、と言ってくるのでそのとおりに従う。
アイコンファイルを57x57で適当に用意してinfo.plistなどにも登録。
コンパイラがarmv7だと上手く動作しなかったので、無理やりarmv6に書き換え。
もちろん実機のプロビジョニングなどのファイル関係はオーガナイザーで完璧にしておく。
debugのライセンスをデベロッパーのライセンスに設定。
info.plist関連では、Bundle Identifierも正しく設定。(これは関係なさそうだが)
そんなあたりの作業をすると、やっと実機での動作に成功。今は動いた途端のメモなので、もう少し事態を確認すると整理できるかも。
世の中がXCODE4に移行することを拒絶していた時代から、初めての開発ソフトがXCODE4という時代になりつつ在ると実感し、使いにくいながらもXCODE4へ移行することを覚悟。
学校ではアプリ制作をXCODE3で教えているのでダブルインストールした状態を維持しつつ、XCODE4を使い始めていくと、こんな事象が発生。
「古いOSで動いているiPodTouchの2Gでの実機動作ができない?」
2GはiOS4.2までしかアップできないので、旧OSにターゲットなどを合わせるのだが、なかなか手ごわい。で、最後にやって動いたパターンがあったので、メモ記事としてここに記載することに。
まずはXCODE3でプロジェクトのみを作成。
XCODE4でそれを開くと、スナップショットを作って少し改変するよ、と言ってくるのでそのとおりに従う。
アイコンファイルを57x57で適当に用意してinfo.plistなどにも登録。
コンパイラがarmv7だと上手く動作しなかったので、無理やりarmv6に書き換え。
もちろん実機のプロビジョニングなどのファイル関係はオーガナイザーで完璧にしておく。
debugのライセンスをデベロッパーのライセンスに設定。
info.plist関連では、Bundle Identifierも正しく設定。(これは関係なさそうだが)
そんなあたりの作業をすると、やっと実機での動作に成功。今は動いた途端のメモなので、もう少し事態を確認すると整理できるかも。
iPhoneアプリ開発メモ:画面の向きを固定する。 [iPhone SDK]
どんな本にも書いてあるけど、iPhoneアプリの画面の向きを横長にするか、縦長にするか、はたまたゲーム中にプレイヤー交代とばかりに、向きを変えてしまうなどを行う必要がある場合、命令文で向きを指定する方法が必要です。
新規プロジェクトを用意した時に、以下のコードが見つかります。これを改造します。
ホームボタン(丸いボタン)が右に来てほしいなら以下の通りになります。
つまり、横長の右なら
UIInterfaceOrientationLandscapeRight
横長の左なら
UIInterfaceOrientationLandscapeLeft
縦長で下、つまり通常の画面なら
UIInterfaceOrientationPortrait
縦長で上なら
UIInterfaceOrientationPortraitUpsideDown
とすることで、画面の向きを固定する事ができます。
新規プロジェクトを用意した時に、以下のコードが見つかります。これを改造します。
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
ホームボタン(丸いボタン)が右に来てほしいなら以下の通りになります。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return interfaceOrientation == UIInterfaceOrientationLandscapeRight;
}
つまり、横長の右なら
UIInterfaceOrientationLandscapeRight
横長の左なら
UIInterfaceOrientationLandscapeLeft
縦長で下、つまり通常の画面なら
UIInterfaceOrientationPortrait
縦長で上なら
UIInterfaceOrientationPortraitUpsideDown
とすることで、画面の向きを固定する事ができます。
iPhoneアプリ開発メモ:UIButtonの画像をアニメーションする [iPhone SDK]
iPhone SDK ー XCODE 3 で取り組んでいて、UIButtonの画像をアニメーションする方法の備忘録です。私はxibファイルをInterfaceBuilderで取り組む方法がデザイン系の学生には教えやすいので、各パーツをIBでつなぐ操作が伴うものとします。
.hファイルをこんな感じで。
.mファイルをこんな感じで
うまく動いたのでラッキーでした。
.hファイルをこんな感じで。
#import@interface ExampleViewController : UIViewController { IBOutlet UIButton *NextBtn; } - (IBAction)btnNext; @end
.mファイルをこんな感じで
#import "ExampleViewController.h" @implementation ExampleViewController - (void)viewDidLoad { [super viewDidLoad]; NSArray *imageArray = [NSArray arrayWithObjects: [UIImage imageNamed:@"arrowBtn01.png"] [UIImage imageNamed:@"arrowBtn02.png"], [UIImage imageNamed:@"arrowBtn03.png"], [UIImage imageNamed:@"arrowBtn04.png"], nil]; [NextBtn setImage:[imageArray objectAtIndex:0] forState:UIControlStateNormal]; NextBtn.imageView.animationImages = imageArray; NextBtn.imageView.animationDuration = 0.3; [NextBtn.imageView startAnimating]; } - (IBAction)btnNext { //ボタンを押した時の処理を記述する。今回は関係なしで。 }
うまく動いたのでラッキーでした。