スクリプトButtonコンポーネントを使えばいいんじゃね?の1行で全否定されそうな記事ではありますが、例えばボタンとして意識させたくないけど、クリックしたりタップしたりすると反応するキャラクターなどを導入したい場合には使える方法です。Raycasterを付ければUIだけでなく3Dオブジェクトをクリックしたことも検知してくれるので便利。SierraUnity2018.1.0f2まずはButtonの動きからオーソドックスにButtonコンポーネントを使ってクリックを検知してみましょ。[Button]からButtonオブジェクトを作成します。デフォルトの状態に、クリックされた時に呼び出すスクリプトをセットしました。Gist.スクリプトはこんな感じ。クリックされたらコンソールにデバッグ文を出力します。Buttonオブジェクトは画像のようにシンプルに。UIのボタンからゲームを実行して上の[Button]をクリックすると、メッセージが表示されました。メッセージが表示されたここまではOK。今度は、Buttonコンポーネントを使わずにクリックを検知してみます。EventSystemを使おうUnityでクリックやドラッグ&ドロップを検知する時には、EventSystemが使われます。スクリプトから使う場合には、UnityEngine.EventSystemsをusingで宣言します。これに加えてインターフェースを実装します。使うのはIPointerClickHandler。このインターフェースは画面がクリックされた時に発行されるOnPointerClickのイベントを拾いたい時に実装します。Raycasterコンポーネントをアタッチする必要があります。いうのは、マウスやポインターの位置はスクリーン座標で表され、3Dオブジェクトなどはワールド座標で表されるため。座標系が違うので、単純にスクリーン上の位置を拾うだけではオブジェクトをクリックしたことになっているかまで分からないのです。スクリーン上の位置からRay(光線)を飛ばして、オブジェクトがあることを確認しています。詳細についてはUnityのスクリプトリファレンスもご覧あれ。上でも少し触れましたが、3Dオブジェクトの場合とUIの場合では若干手順が異なります。3Dオブジェクトの場合ワールド座標で表される3Dオブジェクトなどの場合は、以下の手順でクリックイベントを拾うことができます。Raycasterコンポーネントをアタッチするのさえ忘れなければ、そんなに難しくはないと思います。人はグーグル先生にお尋ねするとよろし。いつかこのブログでも分かりやすく扱いたいなぁ(願望)サンプルスクリプトはこちら。Gist.UIのボタンが押された時のように、3Dオブジェクトがクリックされた時にコンソールへ出力を行います。3Dオブジェクトのクリックを検知デバッグ文だけだと寂しいので、3Dオブジェクトをクリックしたら色が変わるようにしてみましょうか。上のスクリプトをちょっといじります。Gist.3Dオブジェクトの色を変えたいので、マテリアルを取得してその色を変えています。コルーチンでは指定した時間の間、色が遷移するようにしています。initColorで黄色、targetColorで緑色を指定し、1秒かけて黄色から緑色に変化します。経過時間に応じて、Color.Lerp(線形補間)を使って現在の色を取得し、マテリアルにセットしています。テラシュールブログhttp://tsubakit1.hateblo.jp/entry/2015/02/20/235021目標位置へ等速で動かすコードです。目標時間で最終目的地に到着するような感じです。下のgifだと1秒で目標地点まで到着します。Unityで座標を等速直線的に動かすやつ。「指定時...コルーチンの中身の処理はテラシュールブログさんのこちらの記事を参考にしています。ゲームを実行してオブジェクトをクリックするとこんな感じ。クリックした時に3Dオブジェクトの色が黄色になり、だんだんと緑色に変わっていきます。クリックイベントを拾ってくれてるUIの場合スクリーン座標で表されるUIの場合は、以下の手順でクリックイベントを拾うことができます。Raycasterコンポーネントをアタッチする必要がない点で3Dオブジェクトの場合と異なります。逆に言えば違いはそこだけ。Imageでクリックを拾うのだポッタースクリプトは3Dオブジェクトの場合と似ていますが、Imageコンポーネントを使っているので、ダイレクトに色を変化させます。Gist.変更点はMaterialの色をセットしていたのをImageに変えただけ。Overlay』にしているためです。画面の一番手前に描画するので、光が当たらないから真っ暗になっちゃうんですよね。このスクリプトをImageコンポーネントを持つオブジェクトにアタッチして実行します。3Dオブジェクトの場合と同じように、クリックすると色が変わります。UIでもいけるButtonとの使い分け使い分けを考えたときに最初に浮かぶのは、3Dオブジェクトでクリックイベントを拾いたい場合でしょうか。敵がドロップしたアイテムやお金をクリックして拾う、なんて時に位置やオブジェクトを特定するのに便利。あとは今回のようにクリックするとオブジェクトの色が変わったり、なんなら電気のスイッチをクリックすると部屋が明るくなったりなんてのもいいですね。3Dゲームだと、UIを通してじゃなくてマウスやタップで直接オブジェクトを触って反応させたい場面も多々あるので、そうした時にこのIPointerClickHandlerを実装するといいかも。UIを使うんだったらButtonを使うのが無難です。いうかButtonコンポーネント自体もIPointerClickHandlerを実装してるのよね。Buttonコンポーネントを使わない場面となると......ノベルゲームなどで、立ち絵をクリックすると反応するけど、Buttonコンポーネントのように状態によって色を変えたくない、なんて時は自分のスクリプトにIPointerClickHandlerを実装する方向で。Buttonコンポーネントで状態ごとの色をセットするのはめんどくさい、でもクリックは拾いたい、みたいな。ドラッグ&ドロップのイベントも拾いたいなーって時には自分のスクリプトにハンドラを入れていくのがいいかも。EventSystemの確認は忘れずに自分でUI要素を作成した時には自動的に作られますが、Prefabなどをインスタンス化してSceneを組み立てる場合は、『EventSystem』オブジェクトがいることを確認してね。これがないとイベント拾ってくれないんです。クリックも、ドラッグ&ドロップも、『EventSystem』オブジェクトがいないとダメなんです。[EventSystem]で作れます。ボタンを押しても全然反応しないよ!?」って時はだいたいこの『EventSystem』オブジェクトがいない時。何度引っかかったことか......。ゲーム開発の攻略チャートを作りました!「ゲームを作ってみたいけど、何から手を付けていいか分からない!」そんなお悩みをお持ちの方向けに、todoがアプリをリリースした経験を中心に、ゲーム作りの手順や考慮すべき点をまとめたe-bookを作成しました。ゲーム作りはそれ自体がゲームのように楽しいプロセスなので、「攻略チャート」と名付けています。投稿一覧Unityを使ってアプリを作ったり、Assetを作ったりしてる個人開発者。Unity全般ネタとAsset開発の情報を扱っています。Asset開発は日本語の情報が少ないのよね。ことで些細なネタでも情報を蓄積するのが目的です。2018.07.06追加タグを持ったオブジェクトが含まれるパッケージをインポートした時に、スクリプトからそのタグを使って操作するとどうなるか実験してみました。2018.05.09Unityを複数バージョン保持する方法について。2018.05.22ライティングを変えるだけでゲームにおける見た目の印象がガラリと変わります。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。todoUnityのアセットを作ったり、スマホ向けのアプリを作っています。このブログではUnity初心者に向けたチュートリアルやテクニックを放出しています。詳しいプロフィールはこちら。お仕事の相談や現在提供中のサービスについては、こちらの『サービス内容』のページをご覧ください。Explorers_todoオンライントレーニングのサイトをオープン!エクスプラボを運営しているtodoが、より集中的にゲーム作りについて学べるオンライントレーニングのサイトをオープンしました。エクスプラボのトレーニングルーム』です。勉強したことの進捗も表示できるようになっているので、どれだけ頑張ったのかが分かるようになっています。ゲーム開発の攻略チャート』というe-bookをプレゼントしています。メルマガではゲーム開発のテクニックを中心に役立つ情報をお届けします。詳しくはこちら!お仕事の依頼はこちら!ゲーム開発のサポートも可能!エクスプラボではゲーム開発のサポートのサービスも行なっています。いう場合にオススメのプランです。詳細はこちら!もちろん、普通に開発依頼をいただいてもお手伝いします。その場合はお問い合わせへ。【Unity】ポストプロセシングを使って簡単にプロっぽいゲーム画面を作るゲームの作り方を学べるオンライン講座のサイトをオープンしました!RANKING【Unity】Mathfの切り上げ、切り捨て、偶数丸め。使い分けが大事よねMathf【Unity】ゲームといえばランダム要素。(12)作ったアプリ空とにゃんこと風船と癒し系縦スクロール避けゲーの『空とにゃんこと風船と』(TODOWORKS名義でリリース)気軽に遊べるスマートフォン向けアプリです。ボクセルアートで彩られるどこかレトロ、でも新しい世界で癒されてみませんか?ぼく、猫ですって!タップ系RPG『ぼく、猫ですって!』(TODOWORKS名義でリリース)気軽に遊べるスマホRPG。