Unity4を試してみた ― 2013/06/06 21:42
ここ2年ほど、あれこれ触ってる余裕が無かったぶん、最近は色々と新しいものを体験してみているのですが、今回は「Unity」です。
Android開発で以前からUnityには興味はありましたが、当初調べた時はapk出力が有料で個人開発者にはちょっと敷居が高いかなと感じていたので(汗) ちなみに、今月中は円高最後のセールで13万でUnity Proが買えるようです。(来月から15万)
Unity――。
Unity――。
短時間で3Dゲームが作れると評判なのは知っていましたが、なるほど、実際に使ってみて納得です。 物理エンジンが優秀で、そのあたりの難しい部分はほぼコーディング不要。 3Dゲーム開発では数学的な知識が不可欠ですが、これは無くても作ることができる(あるに越したことは無いけど)。
ゲームオブジェクトを完全に一つの物体として扱える手軽さは素晴らしい。 アニメーション機能も強力で、人物が段差を乗り越えるといった面倒な動作もUnityが全部吸収してくれるので開発者は目的の作業に集中できる。
ゲームオブジェクトを完全に一つの物体として扱える手軽さは素晴らしい。 アニメーション機能も強力で、人物が段差を乗り越えるといった面倒な動作もUnityが全部吸収してくれるので開発者は目的の作業に集中できる。
プログラミングが必要な部分といえば、やや特殊なカメラワークとかプレイヤーの操作とかゲーム進行など基本的なロジック部分だけ。(もちろん拘り出したらいくらでもコードは増えるけど) あとは3D的に重くなりやすい設定を把握してるかどうかでクォリティが変わってくるか――その辺はプラットフォームも含めた経験の数だけ身に付く領域ですな。
とりあえず基本を覚えるため、いくつか作ったサンプルのうちの一つがコレ。
※こちらを参考にさせて頂きました。
(個人的にはJSよりもC#の方が好きなのでC#で書いてます)
(個人的にはJSよりもC#の方が好きなのでC#で書いてます)
空間のど真ん中に微動だにしないCubeをドンと置いて、Directional lightを置いて、カメラに快晴模様のSkyBoxを充てて、Cube内にEmptyなGameObjectを置いてMain Cameraを子にして、Update毎に自分をグルグル回すスクリプト(たった1行)を書いてEmptyに充てる。
たったそれだけで、宙に浮かぶ箱を中心に360度グルグル回るアニメーションが出来上がります。 Androidでも確認。 うまく描画クォリティを落として速度をキープしてくれている。 広大な空間を創造できるなんてスバラシすぎます(>▽< )
ということで少し慣れてきたので、次のステップは当然、自力で無からの構築です。 折角なので物理エンジンを利用した何かを作りたかったので、それほど複雑な動きはいらないエアホッケーを作ってみることにしました。
3D空間の編集操作に慣れてくると、この程度ならば空間作成は30分程度、細かい調整に1~2時間・・・手探りでパラメータを覚えながらなのでそのくらいかかってるけど、慣れた人なら迷わずパッパッと設定して終わってしまうのかもしれません。
書いたスクリプトは、マウスカーソルに追従するパドルのみ。
ネット上に先人の情報がたくさんあるとはいえ、Unityを初めてインストールしてから2日目でここまで作れる手軽さは本当に脱帽です。
ネット上に先人の情報がたくさんあるとはいえ、Unityを初めてインストールしてから2日目でここまで作れる手軽さは本当に脱帽です。
そんなわけで感心していたのも束の間――
ついに問題が2点発生しました!
ついに問題が2点発生しました!
1.プレートにパドルを体当たりさせるとプレートが何故か真上にすっ飛んで行く。
2.パドルの移動が速いと当たらない。
たぶんUnity使いには常識的な話なんでしょうけど、初めて体験した身では、なるほどと・・・調整に時間がかかったのはこの部分です。 Rigidbody、Colliderあたりの設定を色々変えて、とりあえず1の真上にすっ飛んでいくのだけは回避できましたが、あとは2の問題。パドルをゆっくり動かすとパコンと弾くのだけど、速いと素通りする。Collision Detectionを連続に変えたりしても変わらず。
そもそもマウスで動かしてるんだから物理エンジン的には瞬間移動してるように見えてるわけで連続も何もない。 だからマウスを文字通りAddForceで追いかけるように組んだら今度は連続体として扱ってくれたのだが、加速・減速の概念がプラスされてフラフラ面倒なことに。Dragで抑え込むことはできるけど、追従が素直じゃないし遅い。 物理エンジンに影響を与える瞬間移動があればそれに越したことはないのだけど、そこまでは調べきれていない。
そもそも、あまりにも物理エンジンが優秀すぎて「使わなきゃ」とか、コード量も「できる限り少なく」みたいな脅迫概念があったのですが、こういうのは適材適所、時と場合ですな。平面アクションのエアホッケー程度なら普通の2次元ロジックで全部やらせた方が良さそう。
というか悟りました。
これ、平面ゲームを作るのに激しく使える!Σ("□";)
ちょっと立体っぽく見せたいゲームなんかはベストかも。
素材が多くてグラフィックにも困らないし。
あと地味に感じたUnityの難点はMonoDevelopでしょうか・・・。
Eclipse以上に素直じゃないカーソル移動します。 もっともVSに関連付けるのも手ですけどVS2010以降はエディタが素直じゃないんだよな・・・VS2008は候補が出ないし、うーむ。
.
コメント
トラックバック
このエントリのトラックバックURL: http://k2000.asablo.jp/blog/2013/06/06/6838106/tb
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※投稿には管理者が設定した質問に答える必要があります。