2022年10月8日3 分
最終更新: 2022年10月10日
前回までの過程でZEPETOワールドのプロジェクトを作る準備ができました。今回はステージ上にプレイヤーを配置してキーボードで動かせるようにします。
プレイヤーを生成し動かすためには地面が必要です。事前にPlaneなどを仮配置し、プレイヤーが動くことができるスペースを用意しておきます。
Hierarchy上に「3DObject」⇒「Plane」で平面を配置します。
Playerはy座標:0より若干上に生成されますので、作成した地面の座標(TransformコンポーネントのPosition)のx、y、z 全て 0 にしておきます。
大きさは10倍ぐらいにしておきましょう。TransformコンポーネントのScale のxとzの値を 10 にしておきます。
それではプレイヤーを配置します。Hierarchyの生成メニュー、一番下に「ZEPETO」という項目が増えています。そこから「ZepetoPlayer」を選択します。
追加したZepetoPlayerには「ZepetoPlayers」というスクリプトファイルが付いており、Playerとその配下の格納されるカメラ等のプロパティ値を、Inspectorから指定できるようです。
カメラ部分は以下の通りです。基本的にデフォルト値で問題ないでしょう。
ZEPETO.World-1.6.0 バージョンからは、より高度なカメラモジュールが適用されており、上部の「Replace with Enhanced Camera」ボタンを押すことで新しいカメラモジュールへ切り替えをすることができます。
新しいカメラモジュールは、既存のカメラモジュールの機能をすべて上位互換しているようです。
置き換えたい場合は「Replace with Enhanced Camera」を押すと下のメッセージが表示されるので、「Confirm(確認)」を押して置き換えます。
Control部分はPlayerの配下にセットされるオブジェクトです。特に変更する部分が無ければそのまま使用します。
FloatingUI(onApp) はアプリでプレイする際、アバターに関連するUIを公開するかどうかを指定します。
指定したプレイヤーは、スクリプトを通じて呼び出します。
後ほどマルチプレイを実現するために別途作り方を説明しますが、まずは検証のためこちらで簡単にPlayer を呼び出します。
※このオブジェクトは実査には使用しませんので、このフェーズはスキップしても結構です。
Hierarchy上に空のオブジェクトを生成します。
生成されたGameObjectのInspectorから「AddCompornent」で ZepetScript を追加します。
続いてスクリプトファイルを作成します。
projectのAsset内で Create ⇒ ZEPETO ⇒ TypeScript を作成、名前を「CharactorController」に変更します。
ZEPETO のスクリプトは全て TypeScript で作成するようです。これまでC# で作り続けてきたユーザーにとっては、ちょっと厄介な部分です。
作成した「CharactorController」には以下のコードを記述します。
import { ZepetoScriptBehaviour } from 'ZEPETO.Script'
import { SpawnInfo, ZepetoPlayers, LocalPlayer, ZepetoCharacter } from 'ZEPETO.Character.Controller'
export default class CharacterController extends ZepetoScriptBehaviour {
Start() {
ZepetoPlayers.instance.CreatePlayerWithZepetoId("", "[ZEPETO_ID]", new SpawnInfo(), true);
ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
let _player : LocalPlayer = ZepetoPlayers.instance.LocalPlayer;
});
}
}
上のコードを記述済みの「CharactorController」はその前に作成している GameObject の ZepetoScript にセットします。
これでプロジェクトを起動させてみてください。Tシャツ短パン、スキンヘッドのアバターが表示され、キーボード操作で動き回ることができたら成功です。