おもちゃラボ

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

【Unity】ボタンのタッチダウン時にメソッドを呼び出す

Unityのuguiを使うと簡単にボタンを設置できます。
ただし、標準で設定されているOnClickイベントを使った場合、
ボタンから手を離したた瞬間(タッチアップ時)に指定したメソッドが呼ばれます。

判定がシビアなゲームではボタンを押した瞬間(タッチダウン時)に
反応する必要があります。

そこで、ボタンを押下した瞬間に指定したメソッドを呼び出す方法を紹介します。

f:id:nn_hokuson:20180815151633j:plain:w350 

ボタンのタッチダウンイベントを検出する

タッチダウンイベントを取得したいボタンを選択した状態で、
インスペクタからAdd Component→Event Triggerを選択して下さい。

 f:id:nn_hokuson:20180815144006p:plain:w200 f:id:nn_hokuson:20180815144013p:plain:w200

次に「Add New Event Type」をクリックして、「Pointer Down」を選択して下さい。

 f:id:nn_hokuson:20180815144123p:plain:w150

Pointer Downウインドウの右下の「+」を押して呼び出すメソッドを指定します。
ここに呼び出したいメソッドを指定すれば
ボタンを押した瞬間(タッチダウン時)に指定したメソッドが呼び出されます。

f:id:nn_hokuson:20180815144745p:plain:w450






 

Maker Faire Tokyo 2018でARのお皿を展示します

このたび、陶芸家・毛利由実さんのお皿を使った
ARアプリの開発をお手伝いさせていただきました!!

f:id:nn_hokuson:20180726000345j:plain

8/4〜8/5に東京ビッグサイトで開催されるMake Faire Tokyo 2018で、
このお皿を展示・販売されます。
お時間のある方は、ビッグサイトに是非!

makezine.jp


公式のTwitterはこちらです!
是非フォローしてください!

↓↓↓


かわいい豆皿たち

ARに使用するお皿はこちら!
一枚一枚違う絵が描かれていてどれも超かわいいです!
そして、それぞれの絵は四季を表す季語を題材に描かれたそうです!

f:id:nn_hokuson:20180725220001j:plain:w600

しかもこれで全部じゃありません!
なんと全部で80枚もあります(笑)

f:id:nn_hokuson:20180216190632j:plain

ARも見れて二度美味しい

今回は80枚のお皿で一枚一枚違うARが見れるようになっています。
どんなARが見れるかは買ってからのお楽しみ!

販売するお皿には、各季節のお皿をセットにした4枚セットと、
1枚ずつ販売するお皿があります。

ここでは、その内容をちょっとだけ見せちゃいます!

f:id:nn_hokuson:20180725233030g:plain:w300

ARアプリのダウンロード先

ARが見れるアプリはiOS用とAndorid用の両方を用意しています。
下のリンクからダウンロードしていただけます!

f:id:nn_hokuson:20180730003407p:plain:w150  f:id:nn_hokuson:20180730003415p:plain:w130

アプリではARを表示するほか、お皿に書かれた季語の説明の表示や
写真撮影
なども行うことができます。

f:id:nn_hokuson:20180725224543j:plain:w400

また、毛利さんがお皿を作られる過程
写真付きで詳しく紹介しています!

どうやってARのお皿が作られたのか、
これを読めば全部わかっちゃいますよ〜!

f:id:nn_hokuson:20180527143938j:plain


その他の販売

また、Make Faire Tokyo 2018では、ARのお皿以外にも
かわいいキャラクターグッズやアルバムなどもあるので
ぜひお越しくださいね!

【Unity】インベーダ作りで学ぶUnet超入門 その1

Unityでネットワークゲームを作るにはUnetというライブラリを利用します。このUnetを使うことで簡単(?)にネットワークゲームを作ることができます。

簡単にハテナがついているのは、それほど簡単じゃないからです(笑)

Unetには様々なネットワークの専門用語が出てきて、どうやって作ったら良いのか混乱しがちです。ただ、基本的なパターンはある程度決まっているので、それを紹介してからインベーダーゲームづくりに取り掛かりましょう。

f:id:nn_hokuson:20180618152215p:plain:w600

今回の目次は次のようになります。

ネットワークゲームの基本パターン

Unetを使ってネットワークゲームを作る場合、基本になるのは次のようなサーバとクライアントがあるパターンです。
f:id:nn_hokuson:20180617131709p:plain:w380

2人以上の対戦ゲームでは、1台がサーバーとクライアントを兼ねた「ホスト」と呼ばれる役割になります。ときどきホストという言葉がでてくるので、覚えておきましょう。

オブジェクトの生成と移動

さて、いよいよネットワークゲームの作り方について考えていきます。いきなり、とても大切なことですが、Unetを使ったネットワークゲームを作る場合には、サーバーでオブジェクトを生成するのが基本になります。

サーバーでオブジェクトを生成すると、それが各クライアントでも自動的に生成されます。

f:id:nn_hokuson:20180617131801p:plain:w380

サーバーでオブジェクトを動かすと、各クライアントでも自動的に移動します。

f:id:nn_hokuson:20180617131852p:plain:w360

超簡単ですね(笑)

クライアント側でオブジェクトを動かす

上のように動きが決まった敵などはサーバー上で動かせばよいですが、プレイヤなどユーザーが操作するものをこの仕組で動かすのは基本的にNGです。

クライアントからの入力をうけてサーバー経由で動かそうとすると次のようになります。

f:id:nn_hokuson:20180617131941p:plain:w500

ただ、この仕組でプレイヤを動かすと、ボタン入力してからプレイヤが動くまでに、サーバーに行って来ての通信ラグ(②〜④)が発生してしまいます。これではゲームになりません。

そこで、プレイヤだけは特別扱いしてクライアント側で動かせる「Local Player Authority」というチェックボックスがあります。Unetを使ってプレイヤを動かす場合には、基本的にこの方法を使います。

f:id:nn_hokuson:20180617132138p:plain:w500

Unetの基本スタイル

さて、まとめると・・・

  1. 基本的にネットワークで同期したいオブジェクトはサーバーで生成する。また、移動するのもサーバー側で行う。
  2. ただしプレイヤだけは、通信のラグを考えてクライアント側で動かす

この2つをおさえておけば、今後Unetを使ってネットワークゲームを作る場合に役立つこと間違いなし!です。たぶん(笑)

今回作るUnet対応インベーダーゲーム

今回作るインベーダーゲームのイメージは次のような感じになります。

敵が左右に移動しているのば通常のインベーダーゲームと同じですが、今回作るゲームではプレイヤの機体が2台表示されています。

f:id:nn_hokuson:20180618152215p:plain:w500

各プレイヤが1台1台の機体を操って、インベーダーを破壊します。機体はネットワークで同期されているので、一人が機体を動かすと、相手の画面でも同じ動きをします。機体を動かすにはAキーとSキー、弾を打つにはスペースキーを押します。

だいたい、今回作るインベーダーゲームのイメージは掴めたでしょうか。ではプログラムを作っていきましょう。

プロジェクトの作成

では、今回はUnetでインベーダーゲームを作る下準備だけしておきましょう。ここではUnity2018.1.0f3を使って紹介しますが、Unity2017以前のものでも、ほぼ同じ方法で動作できると思います。

まずはUnityを起動し、プロジェクト名をInvader、Templateを2Dにしておきます。Unetは2Dでも3Dでも問題なく動作します。

f:id:nn_hokuson:20180618151600p:plain:w500

つづいて必要なアセットをプロジェクトビューにドラッグ&ドロップしてください。今回使用するアセットは↓からダウンロード可能です。

https://app.box.com/s/rjoq2pjwgm8jp05fdw7u2t1zd0m2tjeb

このような状態になればOKです。

f:id:nn_hokuson:20180618151820p:plain

今回はここまでにしておきましょう。次回はネットワーク同期したプレイヤを動かすところまでを作っていきたいと思います。