✨
Mapboxを使って超絶簡単にオープンワールドゲームを作る方法
UnityとMapboxの連携
前回書いた記事を参照下さい
ワールドを作る
ヒエラルキーで空のオブジェクトを作成します。
作成したオブジェクトにコンポーネントととしてAbstract Mapを追加します。
以上でワールドの作成は完了です。
Enable Previewを押して確認してみましょう。
## Mapの設定
Locationから地図の位置座標を決められます。
Searchからはテキストで検索できます(Tokyoとか)
FEATURESでBuildingをAdd Featureすると地図上にビルの3Dモデルが表示されます。
プレイヤーを作る
次にプレイヤーオブジェクトを作っていきます。
ヒエラルキーで3Dオブジェクト>キューブを作成します。
とりあえずY位置を1にしておきましょう。
作成したキューブにカメラを追加します。
カメラの位置はXYZ全部0で良いと思います。
すると一人称視点で地図の世界に入り込めます。
プレイヤーを操作する
Assetsフォルダ(なかったら作る)にC#スクリプトを作成して、プレイヤーを操作するスクリプトを書いていきます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float speed = 3.0f;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetKey("up")) {
transform.position += transform.forward * speed * Time.deltaTime;
}
if (Input.GetKey("down")) {
transform.position -= transform.forward * speed * Time.deltaTime;
}
if (Input.GetKey("right")) {
transform.Rotate(0f, speed * Time.deltaTime * 10f, 0f);
}
if (Input.GetKey("left")) {
transform.Rotate(0f, -speed * Time.deltaTime * 10f, 0f);
}
if (Input.GetKey(KeyCode.X)) {
transform.Rotate(speed * Time.deltaTime * 50f, 0f, 0f);
}
if (Input.GetKey(KeyCode.Z)) {
transform.Rotate(0f, 0f, speed * Time.deltaTime * 50f);
}
}
}
スクリプトを作成したら、プレイヤーオブジェクトにアタッチ(ドラッグ&ドロップ)します。
実行して十字キーで操作しましょう。
ワールドの表示をプレイヤーを基準にする
最初にワールドをすべて描画すると重すぎるので、ある程度範囲を限定して表示します。
プレイヤーが移動したら、都度続きのワールドが表示されるようにして、オープンワールドとしています。
MapのGENERALにあるExtent OptionをRange Around Transformにします。
Target Transformをプレイヤーオブジェクトに設定すれば完了です。
これでオープンワールドの完成です。
Discussion