Unity 5で 2Dシューティングのチュートリアルを行う際の注意点(第02回)
Unity公式チュートリアル 2Dシューティング
第02回 プレイヤーの移動
上記チュートリアルで、私がつまずいたところ、初心者がつまずきそうなところをピックアップして解説します。
2.3 プレイヤーを動かす準備
前章で作成したプレイヤーのゲームオブジェクトにRigidbody2Dをアタッチしましょう。
まず、PrefabのPlayerをSceneへドロップし、GameObjectを作成します。
#HierarchyタブにPlayerが出現
その状態で、InspectorにPlayerの情報が表示されているので(もしくはHierarchyのPlayerをクリックして選択後)、Inspectorの一番下にある「Add Component」ボタンを押し、「Physics2D」をクリック、「Rigidbody2D」をクリックしてRigidbody2Dを追加します。
既にアタッチされているAnimatorを見て、Apply Root Motionにチェックが付いている場合は外してください。
これは、元々チェックが付いていませんでした。
2.4 プレイヤーにスクリプトをアタッチ
スクリプトファイルの作成
スクリプトファイルを作成しましょう。Assets -> Create -> C# Scriptを選択し、名前をPlayerとします。
保存場所は図format_number(注:おそらく「下図」の誤記)のようにScriptsフォルダの中に保存するようにしてください。
★要注意★
ここでつまづきやすいのは、Scriptを生成後、すぐリネームしないと、クラス名がデフォルトの名前になってしまうと言うことです。
Scriptは、はじめ「NewBehaviourScript」という名前で生成されますが、これをすぐ「Player」にリネームしないと(画面のどこかをクリックしたりして名前編集モードが終わってしまうと)、生成されたスクリプトファイルの中に記述される空のクラスのクラス名が「NewBehaviourScript」という名前になってしまいます。
これに気づかず先に進めると、あとでエラーが起きるので注意してください。
もし、クラス名が「NewBehaviourScript」になってしまった場合は、ソースファイルを直接編集してクラス名を書き換えるか、以下のように一気にScriptを生成してみてください。
・ProjectタブのScriptsフォルダを右クリックし、「Create」「C# Script」を選択。「NewBehaviourScript」が生成され、リネーム可能な状態になっているので、そのまま「Player」に書き換えてEnterを押す。
メニューを辿る時のイメージ
Script生成後、このように新規追加されるが、この青くなっている状態の時に、Playerとリネームすること。
スクリプトを書く
早速コードを書いていきます。Player.csファイルをダブルクリックしてMonodevelop (モノデベロップ)を起動しましょう。
「Player.csファイル」とは、先ほどProjectタブのScriptsフォルダ配下に生成した「Player」のことです。
これをダブルクリックすると、「Monodevelop」というソース編集用のアプリが起動します。
なお、このMonodevelop、たまに起動時にエラーを吐いたり、うまくダブルクリックしたファイルが開けない時があります。
そういう時は一度Monodevelopを終了し、もう一度ファイルをダブルクリックして開くと普通に開けたりします。
あまり気にしないでリトライしましょう。
Player.csの中身は、チュートリアルの例の通りに、すべて置き換えてしまって構いません。
編集前はStart()関数などがありますが、削除して問題ありません。
ただし、貼り付けた時、「rigidbody2D.velocity」のvelocityが赤くなります。
これは、この変数参照の記述方法が古いバージョン用のものであるため、Scriptがエラーになっているのです。
こんな風に赤くなります。赤い部分がエラーです。
ちなみにこのエディタの背景色などは、MonoDevelopのメニューのTools -> Optionsから、Text Editor -> Syntax Highlightingでいじれます。
私の使っている色設定は、「Oblivion」をベースに改造したものです。
そして、エラーはそのままにして、Ctrl+Sでソースを保存し、Unityの画面に戻ると、以下のようなメッセージダイアログが出ます。
これには、
なんか廃止されたAPI使ってるスクリプトがあるみたいよ?
『I Made a Backup, Go Ahead!(バックアップは取ってある。やっちまってくれ!)』をクリックしたら、イイ感じに直しておいてあげるけど、どうする?
あ、一応バックアップは取っておいた方がいいかもね。
(君はいつでもメニューの'Asset/Run API Updater'から手動でAPIを更新できるよ)
みたいなことが 書いてあります。
「Go Ahead!」ボタンを押すと、若干の間の後、Inspectorに表示されているソースが一部書き換わるのがわかるはずです。
このとき、先ほど赤くなっていた行が、イイ感じに自動修正されています。
MonoDevelopに戻ってソースを見ると、すこし間があった後、ソースが置き換わる(修正後のものがリロードされる)のがわかると思います。
なかなか良くできてますね。
プレイヤーにスクリプトをアタッチする
先ほど作成したPlayer.csをプレイヤーにアタッチします。スクリプトをプレイヤーのゲームオブジェクトにドラッグ&ドロップしてください。
正しくドロップできていれば、HierarchyタブのPlayerを選択後、表示されるInspectorの一番下に「Player(Script)」というのが追加されています。
Main Camera (メインカメラ)の調整
ここで、ゲームを再生してプレイヤーが動くか確認する前に、カメラの調整を行います。これはゲーム画面で見える範囲を調整するためです。
ProjectionをOrthographicに、Sizeを3にします。
まずやることは、Hierarchyの「Main Camera」をクリックし、選択することです。
すると、Inspectorにチュートリアルと同じ画面が表示されます。
Projectionは、はじめから「Orthographic」なので、Sizeを、5 -> 3 に変えましょう。
シーンを保存する
今までシーンで作成したものをSceneファイルとして保存します。
Scenesフォルダを作成し、メニューの「File → Save Scene」を選択してください。
シーン名はStageとします。
このとき、既に自分で名前を付けてどこかに保存してしまっていると、「File → Save Scene」と選択しても、静かに上書き保存されるだけです。
チュートリアルと同じように保存したいなら、「Project」タブの「Scenes」フォルダをクリックし、メニューの「File → Save Scene As...」をクリックします。
すると、保存先を聞かれるので、プロジェクトのあるフォルダ配下のScenes(ShootingGame/Asset/Scenes)の中にStageという名前で保存します。
すると、Unityの「Project」タブのScenesフォルダ配下に「Stage」のアイコンが表示されると思います。