リンクQ&A
場所がわかりにくそうな内容へのサイト内リンクを置いたり、説明が大変な内容を外部サイトに誘導して誤魔化すためのページです。随時更新。
【エラー】
・スクリプトをアタッチする時にエラーが出る!
・デバッグの方法がわからない…
・OnCollisionEnterやOnTriggerStayが動かない
・TextMeshProで文字にエフェクトをつけたら、他の文字全てに変更が適用されてしまう…
・Translate関数 と 座標に移動量を加算して移動する方法の違いは?
・URPで表示したモデルがピンク一色になる
【ヒント】
・キャラクターに物を持たせたい
・オブジェクトを円形に動かしたい
【豆知識】
【おすすめサイト】
【エラー】
VisualStudioでGameObjectやTransformなどの予測変換が出ない場合は、「UnityとVisualStudioの関連付けについて」を参照してください。
Visual Studioの予測変換がおかしい!

スクリプトをアタッチしようとすると Can't add script というエラーが出る場合は3Dアクションゲーム編1-3を確認してください。
ざっくり言うとUnity上でのクラス名と実際のスクリプトでのクラス名が異なっている時に発生します。稀に違っていないのにエラーが出る場合がありますが、その場合はUnityを再起動してください。

スクリプトをアタッチする時にエラーが出る!

ゲームがうまく動かないというときは「何のコードを書いたらおかしくなったか」をまず確認しましょう。
次はそこにブレークポイントを置いてその処理が本当に実行されているか確認したり、値をDebug.Logで出力しておかしな値になっていないか確認しましょう(3Dアクションゲーム編3-3参照)プログラムは原則上から順番に実行されます。関数をたくさん使っているとややこしくなりがち。実行順にも気を付けましょう。
よくあるエラー文についてはLessonEXで解説していますが、ここで解説していないエラー文が出た場合はそれをコピペして検索したり、翻訳にかけてみましょう。
デバッグの方法がわからない…

OnCollisionEnterなどの当たり判定用の関数は最低でもどちらかのオブジェクトにRigidbodyがアタッチされていないと動作しません。Rigidbodyをアタッチしてみましょう。
OnCollisionEnter や OnTriggerStay が動かない

WebGL出力がうまくいかない!

TextMeshProにはMaterial Presetという機能があり、同じMaterial Presetを使用しているテキストは文字の影やアウトラインなどの設定が共有されるようになっています。
この問題は新規にマテリアルプリセットを作成することで解決できます。
3Dアクションゲーム編4-1のTipsを参考にしてみてください。
TextMeshProで文字にエフェクトをつけたら、
他の文字全てに変更が適用されてしまう…

画面サイズが変わると、UIのサイズがずれてしまい想定通りの表示にならないことがあります。
これはCanvasの設定やアンカーの設定で調整できます。
3Dアクションゲーム編4-4のTipsを参考にしてみてください。
画面サイズが変わるとUIがずれる!

Translate関数 ではローカル座標を基準に、
transform.position+=移動量 では ワールド座標を基準に移動します。
3Dアクションゲーム編3-5のTipsも参考にしてください。
Translate関数 と 座標に移動量を加算して
移動する方法の違いは?

Asset StoreなどでURPにインポートしたモデルは、古いシェーダーを使っていて正常に表示できない場合があります。
3D脱出ゲーム編5-8のTipsで対応方法を解説しているので参考にしてください。

URPで表示したモデルがピンク一色になる

【ヒント】
HPの最大値と現在値を使うことでHPバーを作ることができます。2Dランゲーム編4-3の進行度バーの作り方を参考にしてください。
HPバーの作り方が知りたい

Buttonコンポーネントを使うことで、簡単にクリックできるボタンを作成できます。2Dランゲーム編5-3か、LessonEXのEventTriggerを参考にしてください。
Buttonの使い方が分からない

親子関係を使うことで比較的簡単にプレイヤーに物を持たせることができます。
LessonEX「剣を振る/ボールを投げる」を参考にしてください。
キャラクターに物を持たせたい

Sin関数とCos関数の性質を使うことで円形移動ができます。
3Dアクションゲーム編5-3を参考にしてください。

オブジェクトを円形に動かしたい

ナビメッシュ、レイキャストなどを使用することで、シンプルに追尾してくるだけの敵と比べて賢い敵を作ることができます。3D脱出ゲーム編EXやLessonEX「Raycast」を参考にしてください。
ルールが複雑だったり、ナビメッシュを使わないようなゲーム(パズルゲームやボードゲームなど)の場合は評価値を用いてAIを作ってみると良いでしょう。やや上級者向けなので、プログラムに慣れてきたらぜひ挑戦してみてください。
賢い敵を作りたい!

【豆知識】
最初は「自分が一番作りたいゲームを作る」ことで手っ取り早く技術が身に付きます。当然完成させることは大切ですが、まずは気軽に作ってみましょう。
「それでも思いつかない…」という方は、以下のサイトを参考にしてみてください。初心者が作るゲームの土台としてオススメのアイデアがまとまっています。
どんなゲームを作ればいい?

「unityroom」というサイトではUnityで作成したゲームをWebGL出力することで公開することができます。限定公開も可能です。
また、不定期ですが「Unity 1週間ゲームジャム」というイベントも開催されます。お題に沿って1週間でゲームを作って公開するイベントです。Unityの実力を高めるいい機会ですので、ぜひ挑戦してみましょう!
【関連】WebGL出力がうまくいかない!
作ったゲームを楽に公開したい!

普通とは違うゲームを作りたい人のための筆者の備忘録です。アイデアの参考にしてください。
【Nintendo SwitchのJoy-Con入力をUnityに反映させる】
ジャイロ操作の取得もできるため、VR機器のような操作を実装できるかもしれません。
・Nintendo SwitchのJoy-ConをUnityで使用する
・【Unity】Nintendo Switch の Joy-Con のジャイロ・加速度・傾きの値を取得したり、振動させたりすることができる「JoyconLib」紹介
【音声入力】
Unityでは音声認識を行うことができます。声で操作するゲームを作ってみると面白いかも?
変わったゲームを作りたい

【おすすめサイト】
↓シェーダーの学習におすすめのサイトです↓
・シェーダープログラミング入門におすすめ
そもそもシェーダーとは何ぞや?といった方は、まずUnity公式が上げている動画をチェックしてみてください!
シェーダー関連


