76回生 星川大瑛
Unityとはゲーム作るためのものです。
Unityを使うことで非常に簡単にゲームが作れます。
実は…あの世界中で大流行した「ポケモンGO」もUnityで作られています!!
とにかくUnityのいいところは
などなど…
ではUnityで作れるゲームの例を紹介します。
AIを使って敵が自動でプレイヤーを追いかける仕組みを作っていきます。AIなんて難しいと思うかもしれませんが、UnityのNavigationという機能を使うと簡単に経路の探索ができます!!
この機能を使うことでPlayerが通れるところを設定できます。
これでヤッター‼︎完成!ではありません。もちろん、プログラミングしないといけません。
AIのプログラミングなんか初心者にできる訳が無い!と思うかもしれません。でも、大丈夫です。たったこれだけで動きます。
リスト5.1: hoge
using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.AI; //ココ重要!! public class PlayerScript : MonoBehaviour { public Transform target; NavMeshAgent agent; void Start () { agent = GetComponent<NavMeshAgent>(); } void Update () { agent.SetDestination(target.position); } }
リスト5.2: hoge
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.AI; //ココ重要!! public class PlayerScript : MonoBehaviour { public Transform target; NavMeshAgent agent; void Start () { agent = GetComponent<NavMeshAgent>(); } void Update () { agent.SetDestination(target.position); } } |
初めはこの状態です。
まず、4行目(using UnityEngine;
の下)のusing UnityEngine.AI;
ですが、これは、UnityでAI(経路探索)を使うためのシステムを呼ぶようなものです。
次に、7,8行目のpublic Transform target;
とNavMeshAgent agent;
ですが、これらは、「変数宣言」といい、Unityでは、public (変数の型名) (変数名);
で変数宣言をします。
public Transform target
はTransform型のtargetという名前の変数を宣言したということです。(※Transform型の変数は、オブジェクトの位置、回転、スケールを扱う変数です。)
また、初めの「public」は書かなくてもいいこともありますが、書いておく方が無難です。
NavMeshAgentはUnityで経路探索をするために必要なもので、NavMeshAgent agent;
はNavMeshAgent型のagentという名前の変数を用意するということです。
その次の11行目のagent = GetComponent<NavMeshAgent>();
は、手順2で作った「agent」という変数にObjectにつけた「NavMesh」というComponentを代入しています。これによって、ScriptからComponentを操作できるようになります。
例えば
最後に、15行目のagent.SetDestination(target.position);
は、NavMeshAgentの機能を使ってtargetの座標(position)まで移動するということです。
このように、Unityを使うとAIによる自動経路探索も簡単にできます。
とにかく、Unityは使って、調べて、しながらたくさん作っていくことで徐々に慣れていきます。またnavigationの詳しい仕組みはこちらのURLをご覧ください。