はてなブログに引っ越しました

とりあえずはてなダイアリーから移行できるはてなブログに引っ越しました。

リダイレクト設定はしています。

Unity入門記事はどうしても画像数が多くなって大変なのでもう更新しない可能性が高いです。 必要と思った記事をピンポイントで作ろうかと思います。

仕事が忙しいのもあるけど、それより最近自宅PCの調子が悪いので全体的になにもできておりません。新調するまでお待ちを。

Unityメモ #4 画像を表示するコンポーネントの追加

今回はコードの説明は入りません。まずはUnityエディタ上でゲームオブジェクトに静的にコンポーネントを追加するところまでやります。

動作がわかりやすい画像を表示するコンポーネントを追加します。

画像を用意

まず画像を用意しておきます。
ここでは3種類用意しました。
Assetsフォルダ以下に配置してください。

これで準備は整いました。

コンポーネントの追加

まず前回同様何もないゲームオブジェクトを作成します。


ヒエラルキーウインドウで作成したゲームオブジェクトを選択します。


インスペクタウインドウのAdd Componentボタンをクリックします。


その中からRenderingを選択し、


Sprite Rendererを選びます。

そうするとインスペクタウインドウにSpriteRendererコンポーネントが追加されました。



ただしまだ画像は設定していないため何も表示されません。
SpriteRendererコンポーネントのSpriteをみるとNoneとあるのがわかるかと思います。

画像の設定


SpriteのNoneとかかれた枠のさらに右側に丸いアイコンがあります。これをクリックすると以下のウインドウが表示されます。

ここで画像を選択してください。


シーンウインドウを見ると画像が描画されているのがわかります。

画像を移動

ついでに残り2つの画像も作りましょう。
ヒエラルキーウインドウに何も選択されていない状態なのを確認してから、それぞれ右クリックメニューでCreateEmptyをえらびましょう。


重なっていますね。


シーンウインドウでドラッグして移動可能です。
重ならないようにそれぞれ動かしてみましょう。

移動しているとtransformコンポーネントのXとY座標(position)が変わっているのがわかるかと思います。
これがまず親子関係がない状態です。

保存

ここで作業が失われないようにいったんシーンの保存しましょう。

親子関係

ヒエラルキーウインドウでドラッグすると既存のコンポーネントの親子関係が作れます。

移動後。


この状態で親のコンポーネントを選択、ドラッグで移動してみましょう。子のコンポーネントも一緒に移動しているのがわかりますね。

子のコンポーネントは親のコンポーネントからの相対的な座標を持つことになります。


ためしに、このコンポーネントのtransformでXY座標(position)ともに0を入れてみてください(数字を直接入力でも移動できます)。

親の中心座標と重なるように子が移動されます。
もちろん、親をドラッグすると子もついてきます。

ショートカット

画像を表示するのに毎回ゲームオブジェクトを作ってコンポーネントを追加するのだるいですね。
ショートカットがあります。
実はCreateEmpty以外はいわばすべてショートカットです。何らかのコンポーネントを追加したゲームオブジェクトを作るという動作になっています。
2D ObjectのSpriteというのがSpriteRendererコンポーネントを張り付けた状態のゲームオブジェクトを作成するというショートカットです。

先にショートカットの方を触ってしまうと、このコンポーネントとゲームオブジェクトの関係がかなり覚えにくいので、あえて遠回りさせました。

入門書をへたに見てしまうと独学だとこの辺の理解が遅れるかと思います。他の環境でプログラムはできるけど、Unity自体は初めてという人は今回の手順でゲームオブジェクトとコンポーネントを理解したほうが良いかと思います。

プログラムそのものが初めての場合は、手っ取り早い入門書のほうが、ちゃんとした理解は置いといて、さくっと絵が出るのでおすすめでしょう。つまりこのblogの対象者ではないということです。

次回コンポーネントをコードから追加してみる予定です。

Unityメモ #3 ゲームオブジェクトのつくり方

はじめに

さて一番基本的なオブジェクトであるゲームオブジェクトを今回作ります。
何度も書いているようにゲームオブジェクト自体は何も機能がないので画面に何も表示されません。
ヒエラルキーウインドウに表示されたのを確認するだけです。

見た目に変化があるものは次回以降で。地味ですいません。

ゲームオブジェクトを作る方法

1.Unityエディタ上で静的に配置(ぽとぺた)でつくる
2.コードで作る
3.プレハブから作る

「3」は今回説明しません。プレハブ自体の概念に関係しますのでこれはあとで。

1.Unityエディタ上でゲームオブジェクトを作る

まずヒエラルキーウインドウで「何も選択せず」右クリックでメニューを出して「CreateEmpty」を選択します。

そうすると素のゲームオブジェクトがヒエラルキー上に出来上がりました。

インスペクタウインドウを見るとTransformだけ存在しているというのがわかります。

座標系やスケールなどの情報しかないということ、これは必須であるというのがわかりますね。

ゲームオブジェクト(正確には必須コンポーネントのTransform)は親子関係を保持すると前回書きました。

この作成したゲームオブジェクトの下にゲームオブジェクトを作ってみましょう。
ぶらさげたいゲームオブジェクトを選択して先ほどと同じように「Create Empty」を選択します。

親子関係ができましたね。

静的なものはこのように作っていきます。

2.コードからゲームオブジェクトを作る

これは簡単で、

new GameObject();

これだけです。簡単なことは簡単なのですが・・・

コンストラクタが通った瞬間にヒエラルキー上に現れます。他のフレームワークではツリー上の親を指定するなどが必要なものがほとんどだと思いますが、Unityはインスタンス作っただけで登録されます。最初はまさかこんな挙動になるとはだれも思いませんので気を付けましょう。

この場合シーンのルートに置かれることになります。

親子関係を指定したい場合はtransformにあるSetParent()メソッドを使います。

GameObject parent = new GameObject("親");

GameObject child = new GameObject("子");
child.transform.SetParent(parent.transform);//親を指定

実行結果

はい、親子関係が出来上がりました。引数にstringをいれるとその名前が設定されたゲームオブジェクトが生成されます。


このコードを書く場所ですが、これはコンポーネントの作成とアタッチに関係してくるので、次回コンポーネントのつくり方で説明します。

Unityメモ #2 ゲームオブジェクトの概念

前回ちらっとだけゲームオブジェクトという単語が出てきていたが、今回はその説明。

今回もまだ実際のコードなどはなし。
概念のみだけどここはわかってしまえば簡単だけれども公式ドキュメントとにらめっこしてもなかなかはいってこない、独学だとスゲー時間がかかったりする部分。超大事。

一応このメモのターゲットを明記しておくけど、Unityをはじめてプログラムなどで組むための人向けではなくて、すでにほかの環境でプログラムを触ったことがある人向け。俺と同じ状況だった人へ。

概要

ゲームオブジェクトとはシーングラフ上の各ノードを表す。

これはある意味cocos2dのNodeやlibGDXのScene2DのActorやGroupに近いもの。

シーングラフとは親があり、子が複数あり、ツリー上で構成されるもの。
普通のGUIアプリなら必ずこの構成だと思ってよい。
子は親の座標からの相対的な座標などを保持する。


公式のドキュメントの説明は以下なのだがこれ読むと余計わからないので気にしなくてよいと思う。
というか、わからせようとしてないと思う。すごく大事なところなのに。
https://docs.unity3d.com/ja/2018.2/Manual/class-GameObject.html

過去のドキュメントだとこの辺少しまともだったと思うけど、現時点ではなにいってるかわからないので無視するべし。

ゲームオブジェクトは親子関係の情報を持っていて、ふるまいはこいつ自身は持たないもの、という理解でよい。
ふるまいは前回書いたコンポーネントのこと。

それ自体は機能をほとんど持たないゲームオブジェクトだが、こいつはコンポーネントを複数保持することができる。
ゲームオブジェクトとコンポーネントは組み合わせてやっと意味が出るということ。

コンポーネントは複数持つことができるというのがポイントでプログラムもコンポーネントとして貼り付けることができる。それによって独自のふるまいを注入することができる。

このコンポーネントがゲームオブジェクトに付与されることを公式には「アタッチする」と呼んでいるのでこれも覚えておきたい。

Transformは最重要項目

親子関係や座標などはより正確にいうとゲームオブジェクトそれ自身ではなくTransformというコンポーネントが持っている。

ただしこれはゲームオブジェクトを作ると必ず含まれている上にpublic変数でアクセスができるので、あまりコンポーネントとしては意識する必要はないかもしれないのでゲームオブジェクトが持っているものと考えてよいと思う。

つまりゲームオブジェクトというものがでてきたら自然とTransformも含むのだなと。

ほかにもいろいろとあることはあるが、現時点でこれだけ覚えておけばよい。
いろいろと知りたいなら以下参照。

https://docs.unity3d.com/ja/2018.2/ScriptReference/GameObject.html


次回からプログラム的なことがやっと始まる…気がする。

Unityメモ #1 「コンポーネント」という言葉に注意

これから自分のためになんかあったときあとで思い出せるようにUnityのメモを残していくことにする。
おもに7月の1か月間で勉強した内容中心にかきなぐっていく。

が、第1回はいきなり勉強関係ない、プログラム関係ない所から。でもすごく大事。

コンポーネント

この単語を意味するところはプログラムを組んできた人なら何らかのソフトウェア部品を意味すると思う。
また、さらに狭義の意味ではGUI部品なども表すことが多いだろう。コントロールなどとかね。

でもUnityにはコンポーネントという名前の意味がちゃんと定義されている。しかも頻繁に使う。

そのためUnityしか知らない人や、Unityのプロダクト上での話に外野が上記単語を持ち出すとかみ合わなくて話が通じないので注意すること。

俺はこれをやらかしたことがある。びっくりするくらい通じない。

Unityのコンポーネントというのはゲームオブジェクトに付与できる振る舞いのこと。大半のプログラムもこのコンポーネントの1つに過ぎないという不思議な感じのものである。

このコンポーネント、libGDXやcocos2dには当てはまる概念はないと思う。

Switch イース8 は間違いなくお勧めだ

概要

アクションRPGの名作であるイース。そのシリーズの8作目。

主人公はいつものアドルである。
が、話は独立しているので8だけで楽しめる。

元はVitaでそれの完全版的なPS4版が発売され、SwitchはそのPS4版の移植となっている。
DLCなども最初から入っている模様。


システム

3人PT。この3人をボタンで瞬時に切り替えることが可能。武器によって属性が違うため、敵の弱点属性をうまく使って戦うというのが基本的な戦い方。

最終的に6人で歩くのだが、操作できるのは3人まで。もちろんPT編成ができるため、その3人のHPが減ってきたら、のこりの3人に変えてプレイなどもできるため基本的に人数が増えるほうが有利ではある。

が、ボス戦になるとPT編成などが全くできなくなるため結局主力の3キャラだけで進めたほうが良いという感じに。というのはキャラ切り替えを設定していない控えのキャラは経験値の入りが少ないようだ。主力にLVを置いて行かれることになる。

スキルはたくさんあるようだが、成長要素もあり、使いやすいものだけに絞るのがよさそう。似たような範囲だったりどれがどんな感じか正直ダメージ的にもわかりにくいものだらけでスキルの差別化はできてない、あまり良いとは言えなかった。結局強いスキル1つだけ使う感じになっちゃう。


ロードは早い。特にスキップトラベルの速さは特筆もの。そのかわり、エリアが細かく区切られるエリア制になっているのが残念。エリアが区切られてはいるが、その先の描画もちゃんとされているのでせまっ苦しい感じはそこまでではないけれども、ロードが短くとも頻繁に入るのはすこしつらい。

元がVitaということで細かく区切る必要があったのとそれをベースにしてイベント類をそのまま配置でいるように無あ以外はきりかえをあまり変えてないのが原因だろうか。

アイテムやメニュー系が一瞬で出るため、快適さを意識したゲームといってよいとは思う。

エストなどの位置がマップに表示差r、スキップトラベルも快適ということでクエストは意識していればクリアはしやすいかもしれない。

シナリオ

序盤はどうしても漂流者たちが生きるためにがんばるというだけで話がすすむのでそこはものたりないとおもう。話が動き始めるのはダーナを操作できるようになってから。

世界の滅亡などが絡んできていきなり話のスケールが広がる。


のだが、どうしても舞台は島1つだけなのでバリエーションは乏しい感じ。


最終的にサブタイトルの意味が分かるのがクリア後というのが地味に素晴らしい。お話的には初期のイース1〜3よりはるかによいとは思う。

ただし、名声が低いとまともなエンディングが見れないのはよくないかな。恐らく200以上必要。普通のエンディングの上で特別なのが用意されているとかならわかるのだが、これは一番上のエンディングでやっと普通のエンディングなので。

サウンド

イースといえばファルコム黄金時代のBGMのよさは有名。

で、その8はどうかといえば、これがすばらしい完成度だった。

BGMがよいRPGならイースという名前を付けてよいのでは、というくらいやはりイースシリーズでは大事だと思う。

グラフィック

メニューの際に表示される絵はTOP絵と個別のキャラ絵の2つがあるがどちらも素晴らしくきれい。

一方で酷評される3D絵のほうだが、これ自体はそれほど悪いとは自分は思わなかった。むしろモーションなどはきになる。

それよりは気になるのは影のちらつきや、テクスチャのモアレ。特に最初の導入部分のイベントの船の上はすごいことになっている。影のちらつきもそうだが、これらは画面全体がスクロールしているときは気にはならないが、画面が止まった感じのイベントシーンではかなりつらい感じになる。

それ以外は南国の島的なグラはきれいだとは思う。

評価

いつもの5段階評価。おすすめかかどうかは総合評価を見てもらえれば。

  評価
システム ★★★−−
シナリオ ★★★★−
サウンド ★★★★−
グラフィック ★★★−−
総合評価 ★★★★★

はい、まちがいなくおすすめです。

株式会社Abby社員募集中(Unity)

株式会社Abbyでは技術者を募集しています。

今回募集している技術はUnityの技術者です。
UnityなのでC#の知識は古いくらいがちょうどよいです(PC以外だと動かない、エラーも出ないとか普通にあるの困る)。
言語よりもIDEを使い慣れている、勘所などそちらを重視します。


今まではスマホ向けに開発をしていましたが、今後はスマホのほかにもプラットフォームを広げる予定です。


https://www.abby.co.jp/

興味がある方は弊社ホームページの採用を参照、または自分宛てにTwitterのDM(@shinsan68k)などでもかまわないです。

もちろん自分以外の弊社社員と顔見知りでしたらそちらからコンタクトをとって構いません。

ご応募お待ちしております。