おもちゃラボ

Unityで遊びを作っていきます

Unity

Animatorの使い方とアニメーションカーブ入門

レースゲーム開始時や映画の開始のカウントダウンによく使われる円がくるくるして数字が減っていくあれ(↓)を作ってみましょう。今回はUnity付属のアニメーションカーブとドープシート、Animatorを使って作ります。図www.youtube.com次のように手順が長いで…

敵にやられたときに画面を赤く光らせる

昔のゲームだと敵にやられたときに画面全体が赤くフラッシュしたりしましたね。今回はこんなのを作ります。まずはプロジェクトを作って画面全体を光らせるためのImageを配置しましょう。ヒエラルキービューから「Create」→「UI」→「Image」を選択し、画面い…

Unity5.5.0f3でパーティクルがピンク色になる

Unity5の教科書のP.336で、イガグリにパーティクルをアタッチすると白いパーティクルが放出されている画像(Fig.7-57)が載っています。Unity5.5.0ではParticleSystemコンポーネントをゲームオブジェクトにアタッチすると、下図のようにピンク色のパーティク…

UnityでiOSビルドするとエラーが出る

Unity5の教科書で、iPhoneにアプリケーションをインストールしようとすると、Xcodeで次のようなエラーが表示される場合があります。 エラー内容 Signing for "Unity-iPhone" requires a development team. Select a development team in the project editor.…

Unityでグリッドが表示されない!

いつも表示されていたシーンビューのグリッドが、 ある日突然表示されなくなってしまいました・・・シーンビュー上部の「Gizmos▼」から「Show Grid」を選んでも変化なし。 これは困った・・・ただ、平面をおいてみると・・・ん、うっすら表示されている? メ…

ワールド空間に文字を表示する

プレイヤの頭の上にポップアップで文字を表示したいことが時々あります。今回はその方法を紹介します。今回の目次は次の通りです。 3D空間上に文字を表示する だんだん文字を透明にする どこからみてもカメラの方向を向くようにする 3D空間上に文字を表示す…

Unityでテクスチャにお絵描きしよう

Unityではゲームの実行時にリアルタイムでテクスチャのピクセルを変更することが出来ます。この方法を使ってテクスチャにお絵かきをしてみたいと思います。今回の記事の内容は次のとおりです。 平面の配置 テクスチャの設定 テクスチャの上半分を塗りつぶす …

C#のヒアドキュメントで変数を展開する

Rubyには、文字列を見た目通りのフォーマットに整えてくれるヒアドキュメントという書き方があります。C#では見た目通りの入力ができる文字列のことを逐次的リテラル文字列と呼びます。 逐次的リテラル文字列とは 書き方は簡単で文字列の先頭に@(アットマー…

【Unity入門】60分で作るシューティングゲーム 最終回

前回までの記事で、シューティングゲームを動かすための基本的なプログラムは完成しました。nn-hokuson.hatenablog.com最終回は見た目などの細かい部分の手直しをしていきましょう。第1回 ロケットを動かそう 第2回 弾を発射しよう 第3回 隕石を落下させ…

【Unityシェーダ入門】シェーダでワイプエフェクトを作る

昔のマリオやペルソナ5でも使われている、だんだん視界が狭くなるワイプエフェクトをUnityのシェーダで作ってみます。このエフェクト、ワイプエフェクトとかアイリスエフェクトとか、色々な呼ばれ方をしているようで正式名称がわかりませんが、下のようなや…

InputFieldでテキストハイライティングをしてみる

UnityのuGUIにテキストを打ち込むためのInputFieldという部品があります。このInputFieldを使ってテキストハイライティングする方法を紹介します。ちょっとトリッキーな方法なので、実際に使えるかは状況によります(笑)今回の記事は次の内容です。 InputFi…

【Unityシェーダ入門】Unityのポストエフェクトでモノクロ画面を作る

ポストエフェクトとは、カメラに映ったゲームシーンを一枚の画像として加工する処理のことです。UnityにはStandard Assetとして次のようなエフェクトが用意されています。qiita.com今回は画面を白黒にするモノクロのエフェクトを作りながらポストエフェクト…

【Unityシェーダ入門】円やリングをかっこよく動かす方法

Terrainの青いカーソルやシューティングゲームの着弾地点など、後からオブジェクトに幾何図形を描きたい時に使えるシェーダを紹介します。今回の記事の内容は次のようになります。 下準備をする 円を書いてみる リングを描いてみる リングをいっぱい描く リ…

【Unityシェーダ入門】フォン鏡面反射で金属っぽくしてみる

前回はライティングの基本となるランバート拡散照明モデルを紹介しました。今回は、ランバート拡散照明モデルを応用した、フォン(Phong)鏡面反射モデルをUnityを使いながら紹介します。フォン鏡面反射は反射光を再現した照明モデルで、金属のような質感の…

【Unityシェーダ入門】ランバート拡散照明モデルを試す

今回はUnityのライティングとシェーディングのお話をしようと思います。シェーダとは名前が示すとおり「影」をつけるための技術です。影の付け方で、様々な質感や見た目を表現できます。上の画像は左からランバートシェーダ、フォンシェーダ、トゥーンシェー…

【Unityシェーダ入門】テクスチャをブレンドして自然な地形を表示する

例えば草と土、土とレンガ、など複数のテクスチャをうまい感じにブレンドすることで、自然な見た目の地形表現ができるようになります。Photoshopで作成しても良いのですが、リアルタイムに変化させたい場合や、ステージを見ながら調整したい場合はシェーダを…

【Unity2017対応】Google Cardboardで始めるVR開発入門

記事の内容をUnity2017対応にアップデートしました!(2017年7月末更新)VRのゲームを開発するとなると、Oculus Riftとか買わなきゃだめだし高くつきそう、というイメージがありました。が!Google CardBoardなる超手軽なVRビューアが販売されているのですね…

【Unityシェーダ入門】uvスクロールで水面を動かす

シェーダを使ってテクスチャを動かすことで、水面を表現してみます。テクスチャを動かせれば水面だけではなく、滝や川など様々なものを表現できるようになります。今回はテクスチャを動かすために、uvスクロールという方法を使います。今回の内容は次のよう…

Reflection Probeで鏡面反射する床を作る

UnityでReflection Probeを使って反射する床を作る方法を紹介します。水面とか鏡とか色々と応用できそうなので、ぜひ使ってみて下さい!今回の例では次のような見た目の反射する床を作りますー。今回の内容は次のようになります。 床とモデルを配置する Refl…

【Unityシェーダ入門】ステンドグラスのシェーダを作る

前回に引き続きテクスチャを表示するシェーダを作成しましょう。前回はテクスチャを表示するだけの基本的なシェーダでした。nn-hokuson.hatenablog.com今回は、もう少し発展させてステンドグラスのような見た目のシェーダを作ってみましょう。実行結果は次の…

【Unityシェーダ入門】テクスチャを表示する

ここまでドラゴンの3Dモデルを使っていろいろなシェーダを作ってきました。いい加減ドラゴンも飽きてきたので、今回はテクスチャを使ったシェーダを作ってみましょう。最終的な見た目は次の図のようになります。 シェーダを作る下準備 今回もベースとなるプ…

【Unityシェーダ入門】リムライティングのシェーダを作る

前回は氷のような中央部の透明度が高く、周辺の透明度が高いシェーダを作成しました。nn-hokuson.hatenablog.com今回は前回作った氷のシェーダを利用して、背後から光が当たったようなリムライティングと呼ばれるシェーダを作ってみましょう。 リムライティ…

【Unityシェーダ入門】氷のような半透明シェーダを作る

前回はオブジェクトを半透明にするための方法を紹介しました。オブジェクトを半透明にするには次の3点をを設定する必要がありました。 Queue alpha:fade SurfaceOutputStandard nn-hokuson.hatenablog.com今回は前回作った半透明のシェーダに、もうひと工夫…

【Unityシェーダ入門】透明なシェーダを作る

前回はサーフェイスシェーダのパラメータをインスペクタから制御できるようにしました。nn-hokuson.hatenablog.com今回はシェーダを使って3Dオブジェクトの見た目を半透明にしてみましょう。シェーダで透明度を扱えるようになるとガラスのような表現や、金網…

【Unityシェーダ入門】シェーダのパラメータをインスペクタから設定する

前回はシェーダプログラムの中で色の情報を直接指定していました。もうすこし、柔軟にパラメータを操作できるようにしましょう。nn-hokuson.hatenablog.com今回は、はじめにC#スクリプトからシェーダ内のパラメータを操作できるようにします。続いてインスペ…

【Unityシェーダ入門】20行から始めるUnityミニマルシェーダ

前回は標準のシェーダを使って何が出来るかをひと通り試してみました。nn-hokuson.hatenablog.com今回は、一歩立ち戻って、最小限のシェーダをみてみましょう。 最小限のシェーダ 下のプログラムが、不要な要素を全てはぶいた最小限のシェーダです。まずは単…

UnityでWiiリモコンの加速度センサ値を取得する

UnityでWiiリモコンの加速度センサの値を取得する方法を紹介します。 とりあえずMac環境ですが・・・・まずはシステム環境設定のBluetoothの項目を開きます。この状態でWiiリモコンのペアリングボタンを押すと 画面にNintendo RVL-CNT-01が表示されます。 「…

【Unityシェーダ入門】Unityのシェーダで遊んでみよう

Unityのシェーダって、かっこ良い表現ができるらしいけど、難しそう・・・ というイメージがありますよね。実際に、C#のプログラムとかと比べると すこしトリッキィーに感じる部分も沢山あります。ですが、基本的には高校レベルの数学と画像処理の簡単な知識…

Unityで背景スクロールする3つの方法

スクリプトでテクスチャ座標を動かす MaterialがもつSetTextureOffsetを使ってテクスチャをスクロールする方法です。 この方法では、スクロールするテクスチャのWarp Modeを「Repeat」に設定します。 また、Texture Typeが「Sprite」だと正しく動作しないの…

iTween Visual Pathを使ってモーションパスを設定

iTweenにはエディタからモーションパスを設定できる「iTween Visual Path」というアセットがあります。これを使ってモーションパスを設定してみましょう。こんな感じの動かし方が出来ます。Unityでショートアニメの実験中。飛行機の登場シーン作った。まだ人…

Hinge Jointを使ってチェーンを作る

UnityのPhysicsにはHinge Jointというコンポーネントが用意されています。これを使えば、チェーンみたいなものが作れるんじゃない?と思ったのがきっかけです。世には先人がいるもので、似たようなものを作られている方が・・・!^^;;www.youtube.comwww.hon…

【Unity入門】60分で作るシューティングゲーム 第5回

前回は、Physicsを使って隕石と弾の当たり判定を行いました。 また、アセットストアから爆発のエフェクトをダウンロードして表示できるようにしましたね。nn-hokuson.hatenablog.com第5回目の今回は、ゲームオーバの判定とuGUIを使ったスコアの表示をしまし…

クリックしたオブジェクトをアニメーションさせる

オブジェクトがクリックされたときに、アニメーションを付ける簡単な方法を紹介します。実行結果は↓のような感じになります。 クリックされたことを検知する まずはタッチを検出したいオブジェクトにコライダをアタッチします。オブジェクトをシーンビューに…

【Unity】NavMeshで経路に沿って動かす

NavMeshを使ってキャラクタを動かす方法を紹介します。 NavMeshを使えば、簡単に移動できる範囲を指定でき、指定した経路にそって自動的にキャラクタを動かすことが出来ます。 ステージを作る まずは土台と鳴るステージを作成します。 ステージには標準のモ…

Spriteを画面いっぱいに広げるスクリプト

画面に配置したスプライトを画面いっぱいに広げたい場合、手作業で合わせるのは大変なので、スクリプトで調節する方法を説明します。 Spriteを拡大する流れ カメラの画面サイズにスプライトの大きさをあわせる流れは、 カメラの外枠のスケールをワールド座標…

UnityでArduinoとシリアル通信をする

UnityではC#が使えるので、シリアル通信用のクラス(SerialPortクラス)を使うことが出来ます。ただ、Unity上でシリアル受信をすると速度がでないため、シリアル通信用のプラグインを作ります。 Arduinoでシリアル送信プログラムを作る まずはテスト用にArdu…

【Unity入門】60分で作るシューティングゲーム 第4回

前回は隕石のPrefabを作って、時間とともに隕石を生成するところまで作りました。nn-hokuson.hatenablog.com第4回目の今回は落ちてくる隕石を撃ち落とせるようにしましょう。そのために、弾と隕石の当たり判定をつけていきます。第1回 ロケットを動かそう …

「Unity5の教科書」を出版しました!

6月末日に、Unityの参考書「Unity5の教科書 2D&3Dスマートフォンゲーム入門講座」を出版しました! 祝「Unity5の教科書」発売! で〜〜ん!!!! 初めての出版ということで iPhoneアプリやLineスタンプのリリースとは違った大変さがありました。 なんとい…

【Unity】ユニティちゃんをMechanimでジャンプさせる

ユニティちゃんには様々な歩行やジャンプアニメーションなど、さまざまなアニメーションが用意されているので、これらを組み合わせることで簡単にユニティちゃんを動かすことが出来ます。ここでは画面をクリックしたときにMechanimでユニティちゃんをジャン…

【Unity入門】60分で作るシューティングゲーム 第3回

前回は、スペースキーを押すたびにロケットから弾が発射されるようにPrefabを作り、スクリプトを修正しました。nn-hokuson.hatenablog.com第3回目の今回は時間経過にともなって画面上部から隕石が降ってくるようにしましょう。第1回 ロケットを動かそう 第…

【Unity入門】60分で作るシューティングゲーム 第2回

前回はUnityのプロジェクトを作成し、キーボードでロケットを動かすところまで作りました。nn-hokuson.hatenablog.com今回はシューティングゲーム作りの第2回です。スペースキーを押したら、ロケットの先端から弾が発射されるようにします。第1回 ロケット…

【Unity入門】60分で作るシューティングゲーム 第1回

Unityをインストールしてみたけれども「どうやってゲームを作っていけばよいか分からない!」という方は多いと思います。 かくいう私もUnityを触り始めたときは、何をどうしていいのかさっぱり分かりませんでした。そこで、簡単なシューティングゲームを作り…

Unityでバネモデル

Unityで小ネタアニメーション、第7回はバネモデル(spring)です。バネ動作のアルゴリズムは、第4回で説明したイージングのアルゴリズム(Unityでイージング - おもちゃラボ)と非常に似ていて、イージングのアルゴリズムを少しだけ書き換えるだけで、なん…

Unityで偽ソフトボディ

Unityの小ネタアニメーション第五回目はなんちゃってソフトボディです。ソフトボディ(軟体)の表現としてはバネモデルがよく使われますが、今回はなんちゃってソフトボディなんで、バネなんて高級なものは使いません。見た目がうにゅっとすればいいんです、…

Unityでイージング

Unityで小ネタアニメーション、第5回はイージングです。イージングとは移動速度を何らかの関数にしたがって変化させるもので(あんまりイージングって単語を聞かないですね〜)、アニメーションではよく使われています。例えば、目的地に近づくに連れて速度…

文字移動時のブラーエフェクト

Unityで小ネタアニメーション、第4回は文字が「ひゅん」って移動するときのエフェクトです。なんと、マイナーな!でも、こういう微妙なところにこだわるだけで、意外と素人臭くなくなったりするんですよねーー。作るものマウスをクリックすると、文字が左か…

Unityでジニーエフェクト

Unityで小ネタアニメーション、第3回はジニーエフェクトを作ってみました。Macを使っている人には馴染み深いジニーエフェクトですね。あの、ウインドウがうにゅーーんってスケーリングするアレです。今回もUnity上で実装してみました。作るものジニーエフェ…

マウストレーサー2

簡単なアニメーションの小ネタをストックしていきます。今回は第2回です。前回と同様、Unity上で動作するマウストレーサを作りたいとおもいます。前回とは少し挙動が異なっているのです。作るもの前回は、マウス位置と矢印オブジェクトの距離に応じて、近づ…

マウストレーサー

簡単なアニメーションの小ネタをストックしていきます。環境をどうしようかな〜と思ったのですが、絵が出しやすいし、Vectorクラスも充実してるし、結構デファクトスタンダードになってきたしでUnityを選びました。ちょっと座標の指定とか回転とか癖がありま…

Unityでネットワーク通信をする6 (RPCで同期する)

最終回は、UnityのRPCについて説明したいと思います。RPCとはRemote Procedure Callの略で、ネットワーク越しにオブジェクの持つ関数を呼び出す仕組みのことです。ここ(Unityでネットワーク通信をする2(RPCについて) - おもちゃラボ)の記事にも書きまし…