2012年7月31日火曜日

NGUI 残りHP表示(続編)

最近ブログの記事ごとのPV数をみていたらNGUI記事でもHP表示は人気が高い様子。やっぱりゲームに直結するものがいいのかな?

というわけでHP表示の続編で「ハート型のHP表示はどうすれば良い」についてNGUIフォーラムの作者回答を翻訳いたします。前回のようにCoolなスクリプトがついているわけでなくシンプルなテクニックですがあらかじめ了承ください。

http://www.tasharen.com/?topic=health-bar-with-transparency

January 29, 2012 at 1:36 PM

質問:
HP表示でハートが複数あって、ハートが増える前にその中でゲージが増えるものを作ろうとしています。今までは30フレームほどのアニメーションを作成してましたが
もっとNGUI使った良いやり方があるんじゃないかと思ってます。
たとえば:
ハートのゲージを作成したとしてその裏のレイヤーでゲージを増やして(単色のUISpriteみたいな)、表のレイヤーでは表示させないことってできないかなぁ?
(ゼルダのハートみたいなもの、で話が伝わるといいけど)簡単なテクスチャのAtlasでも良いです。

回答:
UIFilledSpritesが良いね。filledの値を何かのロジックで変更するとか。たとえば、HPが0から5まで変化するとして5つのスプライトでゲージができるし、コードで
値セットすればいいんじゃないかな:(Mathf.Clamp(val – heartIndex)

複数のスプライトを用意する際は、EverQuestみたいなバブルだとするとそれぞれのバブルがスプライトに相当するような感じ。もっと詳しくいうと経験値が
最大値5で現在値3.5だったら、3つの完全に埋まったスプライトを用意して、4つ目は半分埋まったスプライト、5つ目は空っぽのスプライトみたいな感じ。

透明度を持った普通のスプライトを表のレイヤーに用意して、その裏のレイヤーにゲージのスプライトを用意する。裏のゲージのスプライトを修正しても表には
影響しないから、結果的にハートの中でゲージが増えるように見えるようになるよ。
----

筆者は恥ずかしながらゼルダは遊んだことないのですが、外人の方どおしでゼルダのハートで通じる時代なのですね。強力なり80-90年代の日本ゲーム、そしてその強さが過去のものとならないようにわれわれも今度は外国からUnityの知識を再輸入せねば!(掛け声のみ・・・最近自分のゲーム開発サボり気味をちょっと反省。)


2012年7月30日月曜日

NGUI で半透明フェードアウト

今日もNGUIの翻訳記事。今回は作者のお便利リスト(Useful things)に載っている「半透明フェードアウト」についてだ。

http://www.tasharen.com/forum/index.php?topic=1176.msg6006#msg6006
July 28, 2012, 03:20:14 AM

Aさん質問:
パネル前提を半透明にフェードイン・フェードアウトしたいんです(子オブジェクトのコンテンツも全部ふくめて)。NGUIが裏でどう処理しているか知らないので、なんかシェーダをつかってNGUIオブジェクトの透明度を調整できないかな?

Bさん回答:
アルファ値の変更はいつだって出来るよ、ウィジェットのカラー属性のところ。これで役立つか分からないけど、それだけで半透明は達成。さらにスクリプトを作ってランタイムで255から0にアルファ値を落として元に戻すことも簡単。もっといえばアルファ値が100以下とかだったらコンポーネントを無効にするとか、いろいろ調整はできるよ。

作者回答:
ひとこと、NGUIは「カラー」属性で浮動小数点(float)だから0-255じゃなくて0-1だから気をつけてね。

パネル全体を半透明にする方法はけっこう投稿あってスクリプトも提供されている。便利だからもう一回投稿しとくね。
※以下、スクリプトは上記リンクを参照のこと

実際に動かしてみた動画は以下:

http://youtu.be/CWO-yUdEVls

簡単ですね!

2012年7月29日日曜日

NGUI ちょっと息抜き:「天才作者」について


唐突だが、筆者はNGUI作者は天才だとおもう。なぜならツールの開発をしながら、素人ユーザからの質問もtwitter,掲示板など1日おかずに回答もする。開発リリースのペースも月に数回と、と凡人には真似できないものだ。

そのパッケージを一人で作り上げてきたMychael Lyashenko氏について、今年4月のUnityインタビューを翻訳したい。

http://unity3d.com/unity/asset-store/in-depth/issue3

Published: April 18, 2012



開発者やデザイナーがAsset Storeを通じて販売している状況は誰にも予想外の状況であり、また独自性が高く自己完結した小宇宙のような分野を築きつつある。Mychael Lyashenko氏(注:NGUI作者)の例をみてほしい。先週のAsset Store大セールにおいて氏は1.20万ドル(注:約100万円)をNGUI利益として得ている。今日現在で2012年において氏は7.70万ドル(注:約650万円)を稼いだ。氏および他のAsset Store投稿者は安定した収入を得ており、ゲームを継続的に開発することに集中できる環境をつくっている。その対価として、彼らはAsset Store顧客がゲーム作成に要する時間を飛躍的に短縮できる製品を提供できるようになっている。

このインタビューのなかで、氏はNGUIがどのようにして登場したか、また今後どこに向かっているか、また彼の成功とゲーム作成ビジネスの変化について語る。
--

筆者の話は全部載せたいけどちょっとボリュームがあるため冒頭の抜粋だけ:

--
Unityを使うきっかけについて聞かれて・・・作者の言葉
Unityに合わせるのは正直難しかった。僕はオブジェクト指向C++で育ってきて、Unityのコンポーネントベースのアプローチはすごく違和感があった。いつまでもオブジェクト指向でやろうとして苦労をした。シングルトン、いくつものMonoBehaviourを無視したマネージャの作成、何でもコードを使って作ろうとした - いってみればUnityのやり方に対して格闘をしていた。結果的に楽しむことが全くできなかった。
Unity3.0が出てきて初めて、既成概念を捨てることにした。コードがこのようにあるべき、という考えを捨てて、からっぽな状態から考えなおすようにした。そのとき初めて何かをついに学んだ、という瞬間だったし、このエンジンの大ファンになった。理解できないでしょ?

---

たまにはアツいNGUI作者のインタビューを読んで息抜き!


2012年7月28日土曜日

NGUI Playmaker連携(簡単編)

最近PlaymakerをUnity Asset Storeの半額セールで買った。Twitterで詳しい方のオススメをきいて購入を決めたがこれが簡単で使いやすい!

今回はNGUIと連携する方法の簡単編をPlaymakerフォーラムのFAQ翻訳する形で紹介したい:

http://hutonggames.com/playmakerforum/index.php?topic=1356.15

April 27, 2012, 09:49:26 PM

-----
質問:

Playmakerを使ってNGUIラベルにハイスコアを表示するサンプルをみせてもらえませんか?プロパティセット(set property)を使用して。どうやってセットしていいか途方にくれちゃって。。。

普段はGUIテキストセット(set GUI text)を使用するのだけど、NGUI用に今後は開発してもらえるといいな(set NGUI textとか)。

回答:

UIラベル(UI Label)をドラッグ&ドロップで貼り付けるだけだよ。場所はターゲットオブジェクト(Target Object)でテキスト(text)プロパティにセットするのみ。※ステップ1

注意:
Playmakerエディタでロックを設定すること。ドラッグ&ドロップの際にたとえばUI Root(2D)をさわったままでロックしないと子オブジェクトをさわるときにずれるので ※ステップ2

v.1.4から改善をして、Playmakerエディタの状態(State)パネルにドラッグ&ドロップすれば自動的にプロパティのゲット/セット(Get or Set)が作成されて、あとはコンポーネント指定も自動でやってくれる。あるいは、Playmakerエディタの変数(Variables)パネルにドラッグ&ドロップしても自動的にコンポーネントつきの変数が自動作成されるよ! ※3
-----

さて、ちょっとこれだけだと分かりにくいのでPlaymakerのサンプルデモをいじってNGUI連携してみた:



デモでは、的を打ったときにGUI Textにスコアが反映される部分がすでにPlaymakerにある。あとは左上に「2」とあるUI Labelに反映するだけなのだが。。。

以下、言葉で説明するのが無理なので、上のステップ1ステップ2をYoutube動画にしてみた。
PlaymakerとNGUI連携がどれぐらい簡単にできるかご覧あれ!

(説明文はスマホではみれないので動画はPCで全画面にしてみて下さいね)

http://www.youtube.com/watch?v=-AtOcnN9HGU




NGUI 2.1.2

遅くなりましたがNGUI更新情報の翻訳です。今回はマイナーバージョンアップですね。

July 23, 2012, 05:25:53 PM

2.1.2:

- 新機能:選ばれたウィジェットについて、それを囲む矩形が表示される。もしパネルがクリップされてなければスクリーン全体が矩形になる
- 修正:動的に追加されていないTweenでも正しく動作する
- 修正:テクスチャパッカーのパッキングロジックを改善

今回記事は短いですね。しっかり頭に入れて作者の意図を汲み取ろう!

2012年7月26日木曜日

GamePrefabs.com is cool!

今日は興奮することがあった。自分が本を買っているTornadoTwinsが突然フォローしてくれたのだ!本当びっくり。記念としてふたりが運営しているGamePrefabs.comについて紹介してみようとおもう。

Cool Web Site for Prefabs:
http://www.gameprefabs.com/products/category/2

Unity3Dでプレハブを使わない人はいないとおもう。パーツの再利用性があり、色々なものを一から作る手間がまったくない。

なかでもTornadoTwinsはYoutubeなんかでも誰よりも先に多くのプレハブを紹介していて自分も初期の勉強の頃にすごく参考にさせてもらった。荒野の開拓者みたいな人たちですね。

パーティクルなんかもサイトで販売している。

Particles by Tornado Twins are super-cool!


ゲームを作るときはできるかぎり時間をかけずに自分の工夫したいところだけに時間をかけたいものだ。でも効果(パーティクル)は派手にやらないとゲームの価値が下がる・・・

そんなときにプレハブの販売サイトは便利。Asset Storeを使う方もいるとおもうが、こういったサイトも非常に良いものが置いてある。

ただ「みたこともないのに買えるかよ!」 うん、その感覚は正しい。しかし、ちゃーんとYoutubeに例をあげていることもある。

Cool Youtube examples!
https://www.youtube.com/watch?v=xysUQYfW29w

滝の例だけど自分で作るとかなり大変だよね・・・

というわけで、今回はフォローしてもらった記念でヨイショ記事なところあるのは認めるけどYoutubeサイトなんか検索してもらったら面白い要素は分かってもらえるとおもうよ!


NGUIでピンチ・ズームはどうする?

今日もNGUI作者の言葉から。便利なやつら(Useful stuff)をまとめはじめたようです。

June 20, 2012, 12:05:28 PM

投稿:
みんなが便利とおもう事をブックマークして付箋でまとめることにしたよ。ここにどんどん足していくね。(リプライもらって他にも足してくれ、というのもアリね!

リンク先は以下のとおり:


・・・うんうんとうなずけるものがありそうでした。ちなみに「便利な やつら」のひとつを取り上げてみると、


April 20, 2012, 01:28:00 PM

質問:
NGUIでピンチ・ズームはどうやればいいの?作りこんでいる機能はある?それとも自分で作らなきゃダメかな?

回答:
それはいわゆるジェスチャー認識だろうね。そこはNGUIじゃないけどFingerGesturesプラグインを使うべき。その部品は(便利だから)僕だって再度作り直そうとおもっていないよ。

リンク先は以下のとおり:
http://fingergestures.fatalfrog.com/features/online-demo
デモいっぱいありすぎて全部試すのも大変。でもたしかに便利そうだなー


うーん。NGUI作者さまは便利じゃないものは自分で作る。便利なものは使いまわす。

いつか自分もそれぐらい開発スキルほしいなー

2012年7月25日水曜日

NGUI 残りHP表示

NGUI作者がフォーラムのなかで「1日1回はこの質問受けるのでFAQみてね」と書かれてるトピックを翻訳してみます:

トピック「ゲームキャラクターのうえに残りHP表示するためにどうしたら良いか」

http://www.tasharen.com/forum/index.php?topic=130.0

完成イメージ:


January 26, 2012 at 8:15 PM

インスタンス生成した物体のうえにHP表示をするにはどうしたら良いですか?2つのスプライトを子に持つゲームオブジェクトからプレハブ生成を私は試しているのですが、静的(static)に灰色の背景スプライトとHP表示するバーの2つの組み合わせで作成するのがやりたいことです

回答
私ならその機能を実装するには以下のテストをします:

1.既存プロジェクトのシーンを開く
2.NGUIをインポートする
3.UI階層(2D)を作成する
4.これから作成したいヘッドアップディスプレイ(HUD)のテンプレートを作成する-UIパネルルート、子ラベル、進行バー
5.このテンプレートからプレハブ生成・保存
6.次のスクリプトをプレハブのUIパネルに付与する※
7.次のスクリプトをさきほどのプレハブ参照しているいくつかのゲームオブジェクトに付与してみる※

あとは実行ボタンを押して、大成功!

※ スクリプトは以下リンク参照

どうでしたか?Unity3dはこういうときに難しくないのがいいですね。コードは以下のFAQのなかほどにあるのでご参照いただいたうえで自己責任でお試しくださいね!(はい、無責任です。よく言われます・・・)

http://www.tasharen.com/forum/index.php?topic=130.0

2012年7月24日火曜日

NGUI 2.1.0

さて、初回記事のNGUIバージョンアップ情報でまずまずコメントをいただけたのでお約束どおり過去のバージョンアップについても翻訳情報を追加します:
July 14, 2012, 10:16:02 PM 

2.1.0
- 新機能: Unity 3.5.3対応。開発保守も当該バージョンにて実施
- 新機能: BetterListに関数追加(挿入(Inserts)、含む(Contains))
- 新機能: UITweenerに跳躍(bounce)スタイルのTweenメソッド追加
- 新機能: UITweenerの更新時(OnUpdate)関数に完了(isFinished)パラメータ追加し、最後の更新の場合にはtrueになる
- 新機能: TweenTransformはオブジェクトが完了(finished)時に親に再度紐付け(re-parenting)できるようになる
- 新機能: TweenVolumeにより音源の音量を操作(tween)できる
- 新機能: UICameraに新しいプロパティを追加:汎用イベントハンドラ(Generic Event Handler)、セットするとイベントのコピーをどこに動かしても受信する
- 新機能: Widget Wizardによりスプライトの初期ピボット点を指定可能にする
- 新機能: UISpriteAnimationによりアニメーションのループ機能を停止し、フレーム数を返すことができる
- 新機能: TweenFOVを追加、カメラの描画領域(Field Of View)をTweenすることができる
- 新機能: UISoundVolumeスクリプトによりスクロールバーにNGUITools.PlaySound関数の音量変更ができる
- 修正: UIInputにタッチデバイスできちんとパスワード用キーボードを呼び出しする
- 修正: UIImageButtonでハイライトされて有効化(enabled)されたときに正しいスプライトをセットする
- 修正: DragDropItemデモスクリプト(Example Script)はタッチデバイスで正しく動作する
- 修正: UIButtonPlayAnimationはイベントレシーバーの指定がなかった場合にクリアする
- 修正: UICameraに複数の変更、タッチデバイスにプラスとなる修正
- 修正: UIPanelを静的(static)に指定した場合、新しいウィジェット追加の際に形状(geometry)を更新する
- 修正: シェーダで固定(fixed)データ属性は特定のデバイスで不具合があるため、使用できないように変更
- 削除: 廃止された関数を削除し、コードのクリーンアップを実施

ふう、打つだけで20分ぐらいかかるな。。。。  ちいとは勉強にもなるけどそもそもデモ機能をやはりもっと試さないとな

でもタッチデバイスを意識してくれているみたいで有難い。PlaymakerもそうなんだけどiPhoneで動かないととっても悲しいからなー

2012年7月23日月曜日

NGUI 2.1.1

Unity3DのAsset Storeで1,2を争う人気AssetのNGUIは7月に入り、2回目のバージョンアップの2.1.1をリリースした。この開発者の熱心さには本当に頭が下がる。

このブログの最初の記事としてバージョンアップ情報を翻訳することにしてみた。

http://www.tasharen.com/forum/index.php?topic=11.0

July 20, 2012, 09:00:25 PM

2.1.1:
- 新機能:テクスチャパッカーを新たに追加、Unity標準機能の代替とすることができる。下位互換のためにデフォルト設定はUnity標準機能のまま
- 新機能:入力フィールドにこれまでと違う行折返しを追加(MightyM氏提供)。
- 新機能:UILocalizeに"ローカライズ"機能を追加し、親に対し強制ローカライズ(force-localize)をトリガーできる
- 新機能:UITweenerにtimeScaleを無視しないオプションを追加
- 修正:"パネルがドリフトしてしまう"バグを修正(前回バージョンアップよりバグ発生)
- 修正:放射線上に広がる進行バー(サポート対象外)についてワーニングを追加
- 修正:ActiveAnimationはイベント受信(event receiver)をクリアして、再生(Play)時にcallbackされる
- 修正:UISprite Animation.isDoneをUISprite Animation.isPlayingに変更、逆にしていたのを修正

ここまで訳してきて、実際にデモで確認しないと分からないなー、とあらためて実感。

ただそこまでは時間ないので、少しでもコメントつけば今後2.0.0以降のバージョンアップ情報なども翻訳するだけにとどめることにします(おい)

ブックマークに追加

このエントリーをはてなブックマークに追加

自己紹介

自分の写真
Unity3D公式マニュアル翻訳やってる人がスマホ(iPhone, Android)のゲーム開発しています。気軽に面白く初心者が遊べる内容がモットー。Blogでは開発情報をひたすら、Twitterではゲーム作成の過程で参考にしている情報を中心につぶやきます

ページビューの合計

過去7日間の人気投稿