あなたの世界を作りなさい
プレイヤーとキャラクター:基本
ZEPETOキャラクター
16min
zepetoキャラクターは、ワールドシーンに読み込むための基本的なzepetoキャラクターインスタンスユニットです。 zepetocharacterを制御するには、スクリプトに次のインポート文を追加します。 import { zepetocharacter } from 'zepeto character controller'; zepetocharacter api このapiは、アニメーターコントローラーおよびキャラクターコントローラーコンポーネントを含むzepetoキャラクターインスタンスを作成および削除します。 api 説明 createbyzepetoid(zepetoid string, spawninfo spawninfo, complete system action$1) zepeto idを使用してzepetoキャラクターインスタンスを生成します。主にnpcキャラクターの作成に使用されます。 createbyuserid(userid string, spawninfo spawninfo, complete system action$1) useridを使用してzepetoキャラクターインスタンスを作成します。主にnpcキャラクターの作成に使用されます。 removecharacter(character zepetocharacter) キャラクターインスタンスを削除します。 このapiは、アニメーターコントローラーおよびキャラクターコントローラーコンポーネントを除くzepetoキャラクターモデルインスタンスを作成します。 zepeto id これはユーザーが直接指定し、zepetoアプリ内で使用するid値です。 user id これはzepetoシステム内でユーザーを区別するためのユニークなid値であり、ui上で公開されている値ではありません。スクリプトを使用して確認できます。 zepetocharacter apiに興味がある場合は、ドキュメントを参照してください: 以下のガイドを参照してください。 \[ zepeto character controller api https //developer zepeto me/docs/character controller/ ] キャラクターの作成/削除 import { zepetoscriptbehaviour } from 'zepeto script'; import { spawninfo, zepetocharacter, zepetocharactercreator } from 'zepeto character controller'; import { button } from 'unityengine ui'; import { gameobject, object, vector3 } from 'unityengine'; import { worldservice } from 'zepeto world'; export default class samplescript extends zepetoscriptbehaviour { public zepetoid string; public removeclonecharacterbutton button; public removeclonecharactermodelbutton button; private clonecharacter zepetocharacter; private clonecharactermodel gameobject; start() { // spawninfoクラスの新しいインスタンスを作成 const firstclonespawninfo = new spawninfo(); firstclonespawninfo position = new vector3(0,0,1); const secondclonespawninfo = new spawninfo(); secondclonespawninfo position = new vector3(0,0,3); // zepetoidを使用して`zepetocharacter`を作成 zepetocharactercreator createbyzepetoid(this zepetoid, firstclonespawninfo, (character zepetocharacter) => { this clonecharacter = character; }); // zepetoidを使用して`zepetocharactermodel`を作成 zepetocharactercreator createmodelbyzepetoid(this zepetoid, secondclonespawninfo, (object) => { this clonecharactermodel = object; }); // useridを使用して`zepetocharacter`を作成 / zepetocharactercreator createbyuserid(worldservice userid, new spawninfo(), (character zepetocharacter) => { this clonecharacter = character; }) // useridを使用して`zepetocharactermodel`を作成 zepetocharactercreator createmodelbyuserid(worldservice userid, new spawninfo(), (object) => { this clonecharactermodel = object; }) / // `removeclonecharacterbutton`のクリックイベントを設定して、クローンキャラクターを削除します。 this removeclonecharacterbutton onclick addlistener(() => { zepetocharactercreator removecharacter(this clonecharacter); }); // `removeclonecharactermodelbutton`のクリックイベントを設定して、クローンキャラクターモデルを破壊します。 this removeclonecharactermodelbutton onclick addlistener(() => { object destroy(this clonecharactermodel); }); } } 例を実行すると、左側のcharactermodelが以下のようにanimator controllerとcharacter controllerコンポーネントなしで作成されることがわかります。 キャラクターの制御 シーン内のキャラクターインスタンスからのスクリプトを通じて、キャラクターを直接制御できるインターフェースが提供されます。 api 説明 movetoposition(position vector3) キャラクターを位置に移動させます。 movecontinuously(direction vector3) キャラクターが見ている方向に継続的に移動します(更新)。 movecontinuously(direction vector2) キャラクターが見ている方向に継続的に移動します(更新)。 stopmoving() キャラクターの移動を停止します。 jump() キャラクターが設定されたジャンプ力でジャンプします。 doublejump() キャラクターが現在設定されているダブルジャンプ力でダブルジャンプします。(motioncontroller v2を使用している場合のみ適用) teleport(position unityengine vector3, rotation unityengine quaternion) キャラクターがtransformに瞬時に移動します。 setgesture(gesture unityengine animationclip) 指定されたanimationclipに対して、キャラクターの動作が再生されます。 setgestureが実行されている間、ユーザーの制御入力はキャラクターに適用されません。 animationclipのループオプションがオンになっている場合、cancelgesture()が呼び出されるまで再生され続けます。 cancelgesture() setgesture()を通じて現在再生中のanimation clipの再生を停止します。 cancelgesture()が実行されると、ユーザーの制御入力が再びキャラクター制御に適用されます。 制御文字のサンプルコード。 import { zepetoscriptbehaviour } from 'zepeto script' import {spawninfo, zepetocharacter, zepetocharactercreator} from "zepeto character controller"; import { worldservice } from 'zepeto world'; import {animationclip, vector3, waitforseconds } from 'unityengine'; export default class characteractionsample extends zepetoscriptbehaviour { public targetposition vector3; public dancegesture animationclip; private clonecharacter zepetocharacter; start() { // `zepetocharactercreator createbyuserid`を使用して`zepetocharacter`を作成します。 zepetocharactercreator createbyuserid(worldservice userid, new spawninfo(), (character zepetocharacter) => { // 作成したキャラクターを` clonecharacter`に割り当てます。 this clonecharacter = character; // `actioncoroutine()`をコルーチンとして実行します。 this startcoroutine(this actioncoroutine()); }) } actioncoroutine() { yield new waitforseconds(3); // 3秒待った後に` clonecharacter`を`targetposition`に移動させます。 this clonecharacter movetoposition(this targetposition); yield new waitforseconds(1); // 1秒待った後に` clonecharacter`をジャンプさせます。 this clonecharacter jump(); yield new waitforseconds(1); // 1秒待った後に` clonecharacter`のジェスチャーを`dancegesture`に設定します。 this clonecharacter setgesture(this dancegesture); yield new waitforseconds(3); // 3秒待った後に` clonecharacter`のジェスチャーをキャンセルします。 this clonecharacter cancelgesture(); } } 例を実行すると、クローンキャラクターが指定されたアクションを次のように順番に実行するのが見えます。 📘 次のガイドを参照してください。 \[ npcを作成 docid\ yto04gfimcaheeqkh7kfm ] モーションステート zepetoキャラクターのモーションステートに関連するapiは次のとおりです: api 説明 motionstate usedoublejump = (boolean); キャラクターがダブルジャンプを使用できるかどうかを設定します。 motionstate doublejumppower = (number); キャラクターのダブルジャンプのパワーを設定します。 motionstate uselandingroll = (boolean); キャラクターのランディングロールを使用するかどうかを設定します。 motionstate landingrollspeed = (number); キャラクターのランディングロールの速度値を設定します。 motionstate usemoveturn = (boolean); キャラクターのムーブターンを使用するかどうかを設定します。 motionstate gravity = (number); キャラクターの重力値を設定します。 motionstate currentjumpstate キャラクターの現在のジャンプ状態を確認できます。 \ なし = 1, ジャンプアイドル = 0, ジャンプ移動 = 1, ジャンプダッシュ = 2, ジャンプダブル = 3 motionstate currentlandingstate キャラクターの現在の着地状態を確認できます。 \ なし = 1, ランディングスライト = 0, ランディングディープ = 1, ランディングロール = 2 motionstate currentmovestate キャラクターの現在の移動状態を確認できます。 \ なし = 1, 移動ウォーク = 0, 移動ラン = 1 モーションステートの例コード import { zepetoscriptbehaviour } from 'zepeto script' import { custommotiondata, spawninfo, zepetocharacter, zepetocharactercreator, zepetoplayer, localplayer, zepetoplayers } from "zepeto character controller"; import { worldservice } from 'zepeto world'; import { button } from 'unityengine ui'; export default class motionsample extends zepetoscriptbehaviour { public jumpbutton button; private clonecharacter zepetocharacter; start() { zepetocharactercreator createbyuserid(worldservice userid, new spawninfo(), (character zepetocharacter) => { // 作成されたキャラクターを ` clonecharacter` に割り当てます。 this clonecharacter = character; // ` clonecharacter` の `motionstate` のさまざまなプロパティを設定します。 this clonecharacter motionstate usedoublejump = true; this clonecharacter motionstate usedoublejump = true; this clonecharacter motionstate uselandingroll = true; this clonecharacter motionstate usemoveturn = true; this clonecharacter motionstate gravity = 1; }) this jumpbutton onclick addlistener(() => { this clonecharacter jump(); }); } update() { // ` clonecharacter` が null でないか確認します。 if (this clonecharacter != null) { // ` clonecharacter` の `motionstate` の現在のジャンプ状態を出力します。 console log(`現在のジャンプ状態 ${this clonecharacter motionstate currentjumpstate}`); // ` clonecharacter` の `motionstate` の現在の着地状態を出力します。 console log(`現在の着地状態 ${this clonecharacter motionstate currentlandingstate}`); // ` clonecharacter` の `motionstate` の現在の移動状態を出力します。 console log(`現在の移動状態 ${this clonecharacter motionstate currentmovestate}`); } } } zepetoキャラクターアニメーターの制御 zepetoキャラクターアニメーターを制御するためのapi api 説明 statemachine constraintstateanimation zepeto worldのバージョン1 6 0以降、characterstatemachineで再生されるアニメーションの遷移は、motion v2のcharacterstateに応じてon/offできます。 \ true コントローラー入力の影響を受けるzepetocharacter currentstateをオフにし、希望するアニメーションクリップを制御します。 👍 constraintstateanimationの使用例 キャラクターに歩行アニメーションの代わりに水泳アニメーションを使用させたい場合は、水泳アニメーションクリップを新しいステートに適用し、constraintstateanimationを通じてそのステートを固定できます。 キャラクターを移動させながらジェスチャーアニメーションを使用したい場合は、ジェスチャーアニメーションクリップを新しいステートに適用し、constraintstateanimationを使用して固定されたステートでキャラクターを移動させることができます。 これは、animator stateに適用されたパラメータ値を一時的に無視しながら特定のアニメーションを強制的に再生したい場合に使用できます。 zepetoanimator unityengine animator 関数は zepetoanimator の形で利用可能です。 例えば、特定のキャラクターアニメーターの「状態」パラメータに整数値を設定したい場合は、次のように使用できます: zepetoanimator setinteger("state", 1); 詳細な使用法については、unityengine animator のドキュメントと以下のサンプルスクリプトを参照してください。 📘 unityengine animator https //docs unity3d com/scriptreference/animator html https //docs unity3d com/scriptreference/animator html zepeto キャラクターアニメーターを制御するためのサンプルコード プレイヤーによって制御されるローカルプレイヤー zepeto キャラクターのアニメーター制御の例です。 import { toggle } from 'unityengine ui'; import { spawninfo, zepetocharacter, zepetoplayers } from 'zepeto character controller'; import { zepetoscriptbehaviour } from 'zepeto script' import { worldservice } from 'zepeto world'; import { animator } from "unityengine"; export default class samplescript extends zepetoscriptbehaviour { public testtogle toggle; private zepetocharacter zepetocharacter; start() { // ローカルプレイヤー作成コード(他の場所でローカルプレイヤー作成コードを使用している場合は、このセクションを削除してください) zepetoplayers instance createplayerwithuserid(worldservice userid, new spawninfo(), true); // 作成されたローカルプレイヤーをzepetoキャラクターとして設定するためのコード。 zepetoplayers instance onaddedlocalplayer addlistener(() => { this zepetocharacter = zepetoplayers instance localplayer zepetoplayer character; // setintegerの例 const statetype = animator stringtohash("state"); this zepetocharacter zepetoanimator setinteger(statetype, 30); // statemachine constraintstateanimation this testtogle onvaluechanged addlistener((isactive bool)=>{ this zepetocharacter statemachine constraintstateanimation = isactive; console log(isactive); }); }); } } 例を実行すると、statemachine constraintstateanimationの値がtrueのとき、characterstatemachineで再生されるアニメーションの遷移がオフになるのがわかります。 statemachine constraintstateanimationの値をfalseに設定すると、元の状態に戻ります。 キャラクターシャドウの制御 zepeto charactercontrollerパッケージのバージョン1 11 3から、zepetocharacter shadowオブジェクトにアクセスするためのインターフェースが追加されました。 api仕様: charactershadowコンポーネントインターフェース class charactershadow extends unityengine monobehaviour { public target unityengine transform; public autosynctransform boolean; } ターゲット charactershadowオブジェクトの変換を調整するための参照として機能するオブジェクトを表します。 \ デフォルトでは、zepetoキャラクターがターゲットとして設定されています。指定されたキャラクターの底に基づいてcharactershadowオブジェクトの変換が調整されます。 autosynctransform 影の位置を調整するかどうかを決定するフラグ値です。 \ デフォルト値はtrueです。 これにより、ランタイムでzepetoキャラクターの影を制御できます。以下は、影をオンとオフに切り替えるトグルを使用した例のコードです。 import { zepetoscriptbehaviour } from 'zepeto script' import { zepetocharacter, charactershadow, zepetoplayer, zepetoplayers } from 'zepeto character controller'; import { toggle } from 'unityengine ui'; export default class shadowcontroller extends zepetoscriptbehaviour { public shadowtoggle toggle; private charactershadow charactershadow; private localcharacter zepetocharacter; start() { zepetoplayers instance onaddedlocalplayer addlistener(() => { this localcharacter = zepetoplayers instance localplayer zepetoplayer character; this charactershadow = this localcharacter context getcomponentinchildren\<charactershadow>(); console log(this charactershadow\ autosynctransform); }); this shadowtoggle onvaluechanged addlistener((isactive bool)=>{ this charactershadow\ gameobject setactive(isactive); }); } }