Unity
池や海などの水面を作ろうとすると、シェーダを書いたり波動方程式を計算したり大変だ・・・!というイメージがありますが、Unityを使えば超簡単に無料で水面を作ることができます 地形を作る まずは雰囲気を出すため(笑)地形を作っていきます。今回はAsse…
今回はゲーム画面のコントラストを調節するポストエフェクトの作り方を紹介します。Photoshopなどでは、スライダを動かすだけでコントラストを調整できますね。この機能をUnityのシェーダで作ってみましょう。今回の記事の内容は次のとおりです。 コントラス…
GetMouseButtonDownメソッドを使ってマウスの入力を取得していると、uGUIのボタンを押したときにも画面クリックを検出してしまいます。 ボタンがタッチされたときは、画面のタッチは無視する これでも良い場合もありますが、普通は画面のクリックとボタンの…
Unityではオブジェクト向きを変えるにはTransform.LookAtメソッドを使います。この場合、体ごとグルっと回ってしまって不自然なことがあります。ここではIKを使ってUnityちゃんの注視点方向を変える方法を紹介します。 Unityちゃんを配置しする Unityちゃん…
スパイクノイズは、ブランドロゴのイントロとかでよく使われる感じのエフェクトです。といっても伝わりにくいので↓のような感じのものを作ります。スパイクノイズという言葉はもともとは電子回路の言葉で、スイッチをオン・オフしたときに生じるパルスノイズ…
Unityで3Dモデルを普通に描画するとポリゴンが表示されます。ここではポリゴンの頂点だけをポイントで表示する方法を紹介します。頂点の表示方法を変えるだけなら、なんと2行のスクリプトだけですみます。それぞれの頂点に異なる色をつける場合はシェーダを…
uGUIの文字は単色で塗りつぶしたり、Outlineコンポーネントでアウトラインを描画することはできますが(あまり綺麗じゃない)、グラデーションの表示には現在のところ対応していません。そこで、uGUIの文字列にグラデーションをかけることができるスクリプト…
特定のオブジェクトと重なった部分を透明にくり抜くシェーダを紹介します。このシェーダを使えば、次のように、好きな形で別のオブジェクトをくり抜くことができます。 オブジェクトの形にくり抜くためには 今回のシェーダの原理は非常に簡単です。まずは抜…
あるシーンから別のシーンへ遷移するタイミングで何か処理を実行したい場合、シーンが遷移したことを検知する必要があります。Unity5.4からはシーン遷移にSceneManagerを使います。そして、このSceneMangerには「activeSceneChanged」「sceneLoaded」「scene…
落下地点が決まっていて、そこに向かって弾をとばしたり、ミサイルを撃ち込みたいことがあります。落下地点から放物線の方程式を求めるのって、結構難しいんですよね・・・。ということで、ここでは、打ち出し角度と落下地点の座標を指定することで放物線の…
Unityでバネのアニメーションを作る場合、大きく分けて3つの方法があります。 Spring Joint 2Dを使う方法 Animationを使う方法 バネの挙動をスクリプトで書く方法 バネの挙動をシミューレートできるSpring2DコンポーネントはPhysicsの物理挙動に従って計算す…
uGUIを使って文字列を表示するにはTextを使います。このTextを使って一文字ずつランダムに動かす方法を紹介します。UIの文字でも場所によっては動いている方が楽しいですね〜 UIのTextを一文字ずつ動かす方法 UGUIのTextはModifyMeshメソッドを使うことで、…
UnityでOpenCVを使いたい場合は、OpenCV for Unityを使う方法と、自分で使いたい関数だけをNative Pluginとして用意する方法があります。ここでは、アセットを使わず、Native PluginからOpenCVの機能を使う方法を紹介します。UnityでOpenCVを使ったNative Pl…
今回はスクリーンをセピア調にするポストエフェクトシェーダを作ります。ちなみに・・・Wikipediaによるとセピアとはイカスミのことらしいです。 セピア(sepia)とは、イカ墨のこと。また、イカ墨由来の黒褐色をも意味する。かつてモノクロ写真などにこの色の…
プレイヤがゲームステージに配置されている障害物などの後ろ側に回り込むと、見えなくて操作しづらくなってしまいます。そこで、障害物によって隠れた部分は影だけ描いたりします。この記事では、Unityで隠れた部分を影で描画する方法を紹介します。今回の記…
季節はどんどん夏に向かっていっていますが・・・今回はシェーダを使ってUnityで雪を降らせる方法を紹介したいと思います。 雪を積もらせるアルゴリズム 深さのある雪を積もらせる場合は色々と計算が大変ですが、表面に薄っすらと積もらせるだけであれば、テ…
AnimatorでAnimation Clipを動かすと、アニメーションの位置はAnimation Clipに設定されている値が優先されて表示されます。例えば、原点でバウンドするボールのアニメーションを作ると、その後でボールを移動させても、実行時には原点でバウンドするボール…
オブジェクトを破棄(destroy)する直前で効果音を鳴らそうとしても、オブジェクトが破棄されると、AudioSourceコンポーネントもあわせて破棄されてしまうので効果音が鳴りません。 たとえば、シューティングゲームでは、ミサイルが敵にあたったタイミングで…
人型の3Dモデルにボーンを入れるのは、手作業でやると結構大変です。Blenderにはアーマチュアと呼ばれる人型のボーンが用意されており、これを使えば簡単に人型のボーンを入れることが出来るようになります。簡単なはず・・・なのですが、最初にやろうとする…
Unityではゲームを実行しているときにインスペクタから入力した値は、実行終了後にはもとに戻るようにできています。ゲーム実行中にオブジェクトの位置を少し変えてみたり、ライトの方向を少し変えてみたりと実験するのにはとても便利です。でも、実験して気…
Dissolveってなんのこっちゃら?と思って辞書を調べてみたら・・・ Dissolve : 分解する、分解させる、溶かす、解消する だそうです!Dissolveシェーダ自体は分解というよりも侵食に近い感じがしますが、ジワーっと消えていくタイプのアニメーションのこと…
色空間を表す方法は色々(←ギャグではありません)あるのですが、その中でも有名なものに「RGB」と「HSV」があります。 RGBとHSVについて RGBは毎度おなじみのR(Red)、G(Green)、B(Blue)の三原色を使って色を表現する方法です。HSVはH(Hue)とS(Saturatio…
Unityでキレイな画作りをしたいときの、基本的な設定手順を5つに分けて紹介します。Cinematic Filterやカラースペースの変更は処理が重いので、スマートフォン向けではないかもしれません。完成までのステップは次のようになります。 手順1 オブジェクトを…
Animatorを使っていると、あるステートから別のステートへ遷移したタイミングを検知して、アクションを起こしたいことがあります。例えばジャンプアニメーションが終了して着地したタイミングで効果音を鳴らしたいとか、カメラを振動させたい、といった場合…
Unityでプログレスバー(progressbar)を作るときは、uGUIのImageを使うことが多いと思います。Imageの設定をFillに設定することで簡単にプログレスバーのようなものを作ることができます。スクリプトからプログレスバーを更新する場合は、次のようにImageオ…
ゲーム中で、旗や水面は静止していることはあまりなく、風にあおられてなびいていることが多いですね。リアルになびかせようとすると、シミュレーションやボーンアニメーションをする必要があります。この記事ではUnityの頂点シェーダを使ってお手軽に旗や波…
3Dモデルの表現には通常テクスチャを使いますが、3Dモデルの頂点ごとに色を設定したモデルを使用することもできます。こちらの動画で使われているモデルは、テクスチャを使わずすべて頂点カラーで表現されています。たぶん、世界観に統一感をもたせるためのD…
Unityではフォトリアルな映像を作るのは簡単ですが、風ノ旅ビトやGravity dazeなどの独自にデフォルメされた映像を作るためにはシェーダを使う必要があります。その中でアニメ風の映像を作るためには、トゥーンシェーダ(Toon Shader)を使います。Unityには…
ビルボードを使って、常にカメラの方を向く木のオブジェクトの作り方を紹介したいと思います。最近ではビルボードを使う機会も減り、パーティクル以外ではあまり使われなくなりました。ただ、スマートフォン用など、ROM容量が厳しい環境では、依然として使わ…
Animation Curveとはベジェ曲線を使って物体の動きや挙動などをGUIで設定するための仕組みです。 Unityではスクリプトで定義したAnimation Curveをインスペクタに表示することができます。そこで、このアニメーションカーブを使ってレベルデザインをしちゃお…