通勤電車の中で書くブログ

通勤電車の外で書く時もあります。

未経験者がUnityでスマホゲームを作る4

前回はカニを左右に動かせるようにし、さらにスマートフォンの実機にビルドすることができた。

donou.hatenadiary.com

 

4-1

今作っているものはゲームに近づいてはきているものの、まだまだゲームとは呼べない代物である。そもそも、何をするゲームなのか、という根幹のところが決まっていない。本当はゲームの開発を始める前に、どのようなゲームを作るか構想を練り、計画を立ててから着手するべきであるが、なにぶんUnityについて知らない事が多すぎて、本の見よう見まねだけでここまできてしまった。(と言いつつ、実際はどのようなゲームを作りたいか色々と事前に考えてはいた。しかしながらやりたい事がそもそも可能なのかどうかも分からないため、あまり最初から決めすぎずに手を動かして慣れていくのが先決だろうとの考えに至ったため、このような進め方になった。)

しかしそろそろこの辺で、どのようなゲームにするか、決めておくべきだろう。あまりこだわりすぎず、今ある土台(カニと空と地面、そしてカニを左右に動かす仕組み)を活かしてゲームを作るとしたら何が良いか考え、一つの結論に至った。

それは、上から落ちてくるものに当たると得点するタイプのゲームだ。あいにくそのようなゲームの例が思い浮かばないが、割とよくある類のものだと思う。上から食べ物が降ってきて、それを取ればポイント、また敵も降ってきてそれに当たるとゲームオーバーになる、そんな感じのゲームにしよう。

 

4-2

ゲームの大枠が決まったので、これからは完成イメージに向けて足りない要素を埋めていく作業となる。まずは上から降ってくる物体に着手しよう。

上から降ってくる物体は2種類ある。一つは当たるとポイントになるもの、もう一つは当たるとゲームオーバーになるものだ。前者はおにぎり、後者はカラスと決めた。つまり、このゲームは、「カラスを避けながら、いかに多くのおにぎりを食べる事ができるかを競うゲーム」ということになる。

例によってペイント3Dでおにぎりとカラスの絵を描き、それらの画像データをUnityの assetの中に放り込む。これらの目指す動きとしては、ランダムに空に現れて、下に落下することを繰り返すような動きをしてくれれば理想的だ。しかしどうやってこれを実現するか。とりあえず手元の本のページをめくると、参考になる内容が載っていた。その本では、ある物体を沢山のランダムな場所に出現させる方法が説明されていた。概要としては、物体のオリジナルを作り、ゲーム上ではオリジナルのコピーを出現させるようなやり方だ。この方法の良いところは、オリジナルに特性を付与すると、コピーにもその特性が引き継がれることだ。だから同じキャラクターや物体が複数登場するゲームではよく使われる方法らしい。

ここでいうオリジナルのことを、Unityでは「プレハブ」という。おにぎりやカラスも登場は一回きりではなく、何度も出現しては消える存在なので、プレハブを作るやり方が適していると言える。ところで、おにぎりとカラスは、動きとしてはほぼ同じなので、ここからはおにぎりに絞って話を進めていく。

 

4-3

まず、おにぎりのプレハブを作り、それに物理特性を付与した。これにより、おにぎりが空に出現すると自動的に下に落ちることになる。次に、おにぎりが自動で繰り返し出現する仕組み、いわばおにぎり工場を作らなければならない。ゲームの要素に「おにぎり工場」を追加し、そこにおにぎり工場を稼働させるスクリプトを紐づける。おにぎり工場のスクリプトは、本に載ってい物体をランダムに出現させるスクリプトを真似れば簡単だ。これにより、指定した頻度で、指定した範囲内のランダムな場所におにぎりを出現させることができるようになった。

 

4-4

さてこの状態でゲームを動かしてみると、ちょっとした問題が生じる。おにぎりが降ってくるのは良いが、それがだんだん地面に積もり積もって、画面がおにぎりだらけになってしまうのである。こちらの意図としては、降ってきたおにぎりは地面に落ちるのではなく、地面をすり抜けて消え去ってほしいところだ(おにぎりが積もり積もった状態は、ビジュアルとしては面白いが)。しかし、これはどのようにして実現すればよいだろうか。おにぎりが地面に残り続けるのは、物理特性の付与によって実体を持った物体になっているからだ。そう考えると、物理特性を付与しない方がいいのではないか、という事で、物理特性をOFFにしてみると、今度はおにぎりに重力がかからず、いつまでも空中に浮遊するようになってしまった。これは困ったことだ。地面をすり抜けるようにすると重力がかからなくなり、重力がかかるようにすると地面をすり抜けられない。

地面をすり抜けることと、重力がかかること、両方の条件を満たすおにぎりは作れないのだろうか。

未経験者がUnityでスマホゲームを作る3

前回は、物理特性の付与により、地面の上にカニを乗せることに成功した。

donou.hatenadiary.com

3-1

いよいよ、ゲームらしく、左右のボタンを押せばカニが左右に動くような仕組みを作っていきたい。引き続き、図書館で借りた本の、横スクロールアクションの作り方の章を参考に進めていく。

まず、左右のボタンを作る必要があるので、PCに最初から入っていたペイント3Dというペイントソフトで、「◀︎」「▶︎」このような絵を描き、これをボタンとして使うことにする(空と地面の絵を描いた時に使った普通のペイントソフトでやると、余白の部分が白い四角画像ができてしまった。ペイント3Dだと背景を透明にできたのでこちらを採用)。次に、ゲーム画面上でこれらの画像を配置するために、新たにレイヤーを作り、そこに配置した。(理由は良くはわからないが、本の指示に従ってそうした)

 

3-2

ボタンの画像を配置するだけではボタンとして機能しないので、「これはボタンですよ」という旨を指定する必要があるらしい。本に従い、指定する作業を行う。

さらに、ボタンを押した時にカニがそれに反応して動かないといけないので、最初にカニをランダムに動かした要領で、スクリプトを書いてカニに付与する必要がある。例によって、本に書いてあったコードを真似して入力した。

これにより、ボタンを押せばカニが動くゲームができた。(カニが画面外に出ないように、画面の左右に透明な四角い壁を置く作業も後で行った)

 

3-3

これでなかなかゲームらしくなってきたのではなかろうか。だがここからゲームを作り込んでいく前に、別の方向性の作業をしていきたいと思う。

ここまでUnityを触るのと並行して、私は本屋でUnityの参考書を探していた。元々、手元には図書館で借りた本があり、大いに役立ってはいたが、図書館の本だけあって若干内容が古いことも否めず、さらに返却期日というものもあるので、いずれは別の参考になる本を買おうと思っていたのだ。

どの本を選ぶかはあまり深く考えず、分かりやすくて内容が充実してそうな分厚い本を選び、それを買って帰った。家でその本をパラパラとめくっていると、興味を引く見出しを見つけた。曰く、「ゲームを実機にビルドする」みたいなタイトルだったか。とにかく、Unityで作ったゲームをリリースする前に、手元のスマートフォンで動かすことができるということだ。ゲーム自体はパソコン上でも動かすことはできるが、やはり最終形はスマホなので、その最終形がどんな感じなのかを味わってみたい。そう思ったので、現状ゲームとしては未完成もいいところながら、実機にビルドする作業をやっていく。

 

3-4

新しく買った本に従いビルドをしていくわけだが、本によると手数はそんなにかからなさそうだ。しかし結果としては思いのほか時間がかかってしまった。というのも、作業の途中でエラーが出てしまい、それへの対処方法を見つけるまでいろいろと試行錯誤があったためだ。最終的には下記サイトを参考に、対処する事ができた。概要としては、Unityの一機能?である「SDK」のバージョンが古かったので、アップデートする、という対処方法だった。SDKとは何なのか全く分かっていないが、やりたいことはできたので良しとしよう。

vanikki.com

 

3-5

ビルドを行うと、「.apk」という拡張子の付いたファイルがパソコン内に作られる。

その状態でパソコンとAndroidスマホを有線で接続することで、スマホ上でゲームを起動する事ができた。スマホの中にゲームのデータを入れるものかと思っていたが、そうではないらしい。

何にせよ、ついにスマホにゲームをビルドする事ができた。挙動も特に違和感なく、良い感じだ。目標としている「ゲームのリリース」が現実味を帯びてきたように感じる。

donou.hatenadiary.com

 

未経験者がUnityでスマホゲームを作る2

前回はUnityをインストールし、本に従いカニの画像をランダムに移動させるだけのものを制作した

donou.hatenadiary.com

2-1

当然、カニがランダムに動くだけではゲームとは言えない。やはりボタンなどの操作通りに動くようにする必要がある。いつもの本を開き、横スクロールアクションのゲームを作る章を参考に、ボタンを押すことでカニが左右に動くような形にしてみよう。

 

2-2

ただ、カニを動かせるようにする前に、舞台を作る必要がある。舞台と言っても、細かく作り込むわけではなく、Windowsに搭載されているただのペイントソフトを使い、青い空の背景と、地面としての茶色い四角形の塊の絵を描く。これらの画像も、カニと同様、assetという箱の中に入れ、Unity内で使えるようにした上で、画面内に配置する必要がある。まず背景のレイヤーを作り、そこに空の画像を置き、ちょうど画面に収まるような大きさに調整した。空の画像が1番前にあるとカニが見えなくなるので、表示順のところに数字を入れ、後ろ側になるようにする。次に地面だが、これはカニが地面の上に乗るようにする必要があるので、カニと同じレイヤーに配置する。

 

2-3

これでカニ、空、地面が配置された状態が完成した。まだカニは空中に浮いた状態なので、現実世界らしく、重力を反映させたい。カニを選択し、物理特性を付与する。これは思いの外簡単で、重力を与えるために必要なのは重力の強さを示す数字を入力するだけだった。また、カニが他の物体にぶつかる時にすり抜けないようにするため、ぶつかる特性も付与した。

この状態でゲームを再生してみるとどうなるか。やってみると、確かに重力が発生し、浮いていたカニはすぐさま地面に向けて落下した。•••と思いきや、地面もすり抜けて画面外に消えていってしまった。

 

2-4

先ほどカニにぶつかりの特性を付与したが、地面の方にもぶつかりの特性を付与するべきなのだった。地面にも同様の操作をすると、見事にカニは地面に着地するようになった。

 

つづき↓

donou.hatenadiary.com

未経験者がUnityでスマホゲームを作る1

ふと思い立って、スマホのゲームを作ってみることにした。

広告収入を得て、暮らしを豊かにしようという算段だ。

しかしいざやってみるとなかなか大変そうで、完成までは先が長いように思われる。

一旦、現在までの進捗をここに記すこととし、これからも進捗の度に更新していくとととしたい。

 

1-1

まず、私はiPhoneユーザーなので、iPhoneのアプリを作るのが良いだろうと考えた。「iOS ゲーム 開発」みたいな感じで図書館で本を探し、借りることにした。また、Unityというソフトでゲームを作れるという話を前に聞いたことがあったので、Unity関連の書籍も同時に借りた。

 

1-2

iOSの本を読むと、どうやらiOS用のアプリを作るにはMacのパソコンが要るようだ(正確には、作るだけならWindowsでも可能だが、アプリをリリースするまでの工程でどうしてもMacが必要になるらしい)。私の家にはWindowsのパソコンしかないので、iOSのアプリを作るには不向きである。仕方なく、Androidアプリへと方針転換する。

 

1-3

図書館で借りたUnityの本を頼りに、パソコンにUnityをインストールする。

よくわからないが、Unity HUBというものと普通のUnityを両方インストールしないといけないらしい。名前的に、前者が上位の存在なのだろうと推測。インストール後、ユーザーネームなどを入力してユーザー登録を行なった。

 

1-4

これで開発の準備は整った。新規プロジェクトを始める、といった趣旨のボタンを押し、新規プロジェクトを開始。一度目はスムーズに始まらなかったが、ソフトの閉じて再起動するとうまくいった。

 

1-5

引き続きUnityの本に従い進めていく。Unityの仕組みとして、assetsという入れ物の中にゲームの要素(画像など)を格納することになっている。このassetsに、パソコンに保存されていた適当な画像を格納すると、ゲーム上でその画像が使えるようになる。また、画像をどう動かすかの指示もC#という言語を使って行えるようだ。とりあえずassetsに入れたカニの画像を、本に載っていたC#のコードを真似て動かしてみたい。しかしここで問題が起きる。本には「monodevelop」というエディタ上で命令文(=スクリプト?)を書く、とされており、スクリプトを編集しようとするとmonodevelopは自動で起動する、とも書かれている。だが、こちらのPCではmonodevelopなるエディタは全く起動されなかった。

 

1-6

調べたところ、unityにmonodevelopが付属しているのは昔の話で、今はMicrosoft社のvisual studioというエディタをベットインストールして使うのが普通らしい。私が参考にしていた本は内容が古かったようだ。

早速visual studio(無料版)をインストールすると、Unityでスクリプトを編集しようとした時にvisual studioが立ち上がるようになった。おめでとう。

 

1-7

立ち上がったvisual studioで、画像を動かす数行程度のスクリプトを書いていく。例の本を見て、コードの意味も分からぬまま、丸パクリして書いていく。スクリプトは画面上のカニ画像と紐付ける処理を行い、これで思った通りの動きをするはずだ。しかしそう簡単にはいかず、色々と英語でエラーが表示され、カニは一歩も動かなかった。私の書いたコードは本の丸写しだったが、大文字小文字の違いを無視していたのがいけなかったのかもと思い、大文字小文字も忠実に本を再現して描き直すと、カニは見事想定通りの動きをしてくれた。(ある範囲でランダムに高速移動していた)

 

つづき↓

 

donou.hatenadiary.com

立地が多くを決めるという話

お店が成功するかどうかはほとんど立地で決まるというが、文明や文化も立地の影響を大いに受けて発展していくものだ。この立地と文明文化の因果関係というのはかなり面白く、そういうことを研究している学部があったら入学したいぐらいだ。因果関係というのは、例えば、古代の文明は大きな川があったから誕生した、みたいな話だ。大きい川は時々洪水を起こして、周りの土壌に栄養を与えてくれるので、作物がよく育つ。だから沢山の人を養うことができ、文明が生まれるわけだ。

 

日本の食文化は、素材の味を大切にすると言われるが、これも立地が影響している。日本は火山帯に位置しており土地の傾斜が急であるため、土壌中のミネラルが水に溶け込む間がなく海に流出する。だから日本の水は軟水となっている。軟水は素材の味を邪魔しないので、素材の味を生かした薄い味付けの料理が成立するのである。ヨーロッパだと硬水なので、濃く味付けしないとまずくなってしまうらしい。水の硬さと食文化の関係についてはもうちょっと深掘りしていきたい気がする。

 

日本の建築文化も立地で説明できる部分がある。日本の建築の大きな特徴と言えば、木がふんだんに使われていることだと言える。日本は大陸プレートが沈み込むあたりに立地しているので、大陸の岩盤が細かく砕かれている。それが土になっているので、木の生育に都合が良く、木が沢山とれるので建築によく使われた、ということだ。

 

こんな感じで、各国の様々な文化の成り立ちについて、立地の観点から説明すればある程度の説明はつきそうだ。これを応用して、いつか世界の森羅万象の成り立ちを説明できるようになりたい。

買って良かったものを紹介する(雑貨編)

買って良かったものをここに紹介していきたい。なぜこんなことをするかというと、自分が人のそういう記事を読むのが好きなので、もしかしたら少しは誰かの需要があるかもしれないと思ったから。
それでは始めます。
 
①signoのノック式ボールペン(38mm)

www.mpuni.co.jp


ボールペンといっても色んな種類があるが、このボールペンはインクが水っぽく、サラサラと書けるタイプ。ボールペン界のスターであるジェットストリームがどちらかというと油っぽく、紙をほどよくグリップしながら書き進むタイプであるのと対極にあると言ってもいいかもしれない。あるいは、万年筆に少し近い書き味と言ってもいいかもしれない。何にせよ、自分に取ってはこのペンのサラサラっと滑る書き味がとても気持ち良く、乾いた印象のかっこいい字が書ける点が気に入っている。これを使い出してからは基本、これ以外のボールペンを買ったことがなく、替え芯を20本ぐらい常備しているほどの使い込みようだ。はまる人ははまるんじゃないかと思う。

  
②kaneatsu工房の茶色の皿
色に奥行きがあるというか、深みがあるというか、とにかく美しい皿。これに料理を乗せると高級感が出て、食卓が豪華な印象になる。食事の楽しみの中心は食べ物と言って間違いないだろうけど、食器の果たす役割もなかなかのものがあると思う。
 
バルミューダの湯沸かし器

www.balmuda.com

実家に湯沸かし器文化がなく、これ以外の湯沸かし器を使ったことがないからあまり他との比較をすることはできないが、とても便利。デザインがいいのは当然のこと、このケトルの側面の持ち手を握って水道の水を入れ、電源とつながっている専用の置き場に置き、持ち手の下にあるレバーを下げ湯沸かしを開始する、というこの一連の流れがスムーズでストレスなく行える。注ぎ口も細くコーヒーを淹れるのにも最適で、私はほぼ毎日これでコーヒーを淹れている。

 

④パンクしない自転車

www.asahicycle.co.jp

ここに貼ったリンク先の自転車そのものを買ったわけではないけど、パンクしない自転車は本当に買ってよかったと思っている。パンクしないのは、タイヤの中に空気ではなくゴムみたいなのを入れているからで、だから表面に穴が開いても問題なく走行できる。「パンクしない」という触れ込みだが、普通の自転車ってパンクしなくても自然と少しずつ空気が抜けていくものじゃないですか。それに気づくたび家の玄関から空気入れを持ってきて入れ直したり、ということが発生するわけで、この非常に面倒な作業を完全に無くしてしまうノーパンク自転車は偉大なのだ。ただ一つ欠点があって、空気じゃなくゴムが入っているので重い。天は二物を与えずとはよく言ったものだ。

 

Kindle paperwhite 
Kindle Paperwhite 防水機能搭載 wifi 8GB ブラック 広告つき 電子書籍リーダー
 

 本は地味に場所を取るので、買うか買わないかで結構迷ったりするけど、電子書籍ならあまり迷わずに購入できる。広い家に住めない読書好きには強い味方だ。

 

 

global.canon

 いくらスマートフォンのカメラが高性能だとしても、本物のカメラとの間には超えられない溝がある。

 
iPodを聞く奴

 

 昔キャンプに行ったとき、同行していた人がJBLBluetoothスピーカーを持ってきていて、それをテントに引っ掛けて好きな音楽を鳴らしていた。その音がものすごく良くて、私もキャンプから帰って早速購入したのがこれ。もとからipod用の安いスピーカーは持っていたが、音質が全然違って驚いた。

 
⑧クリニカ

clinica.lion.co.jp

 歯磨き粉としての実力はどうか知らないが、この歯磨き粉は「辛くない」という点で他の歯磨き粉より優れている。というか、世の中の歯磨き粉が辛すぎて、歯磨き粉選びの過酷な旅の果てにようやくたどり着いたオアシスがクリニカの歯磨き粉だった、という感じだ。
 
⑨カセットこんろ用たこ焼きプレート

www.i-cg.jp

たこ焼きを家庭で楽しむなら普通ホットプレート機で作るものだと思うが、本当に上質なたこ焼きを作りたければ、ホットプレート機ではなく火で調理した方がいい。このプレートはカセットこんろの上に乗せてたこ焼きを作るためのものだが、ホットプレートで作る場合とできるたこ焼きのクオリティが段違いなものになる。おそらく鉄板の温度の違いによるのだと思うが、このプレートで作ると、たこ焼きの表面が良く焼ける一方で中身は焼きすぎず、外がカリッとして中がトロッとした理想的なたこ焼きを容易に作ることができる。のみならず、形もきれいな球体に仕上がるので、家でたこ焼きを作る人にはぜひ勧めたい。

 

 

以上。また思いついたら追記したいと思う。

色の三原色と光の三原色が違うのはなぜ?④最終回

前回(https://donou.hatenadiary.com/entry/2020/06/17/194636)は色の三原色の話の途中で終わってしまっていたので続きをやっていく。


前回はこういう話だった。すなわち、「色というのは、「どの色の光を吸収するか」によって決まるものなのである。そして、それはつまり、赤、青、緑の三色の光をそれぞれどれだけ吸収させるかを自由に決められれば、全ての色を表すことができるということだ。」

 2色の光を混ぜると、その2色の光の両方が目に届いて、脳内で別の色に変換されるが、2色の色(絵の具)を混ぜると、両方の絵の具に吸収されなかった光の色だけが見える。

だから、絵の具で全ての色を表そうとすると、必要な三色は「赤、青、緑」ではなく、「赤だけを吸収する色、青だけを吸収する色、緑だけを吸収する色」の三色となる。でないと、光の吸収させ方を自由に調整できないからだ。そしてこの三色こそが色の三原色と言われる「シアン、黄色、マゼンタ」なのである。

・・・これで謎が解けた、ということになるのだが、いまいち納得のいく解答になっていない気がする。自分としては調べて理解したつもりだが、腑に落ちる説明をするのは結構難しいものだ。かと言って、これからさらに言葉を重ねて説明する気力もなくなったので、この辺で終わりにする。いつか気が向いたら図とか、追加するかもしれないけど。

 

ところで、色の関連で「なぜ黄色が特に明るく見えるのか」「なぜ新鮮な魚の刺身は虹色に見えるのか」という疑問が浮かんできており、またいつか調べてみても面白いかもしれない。

 

以上