CREATE YOUR WORLD
Players & Characters : Basic
ZEPETO Character
16분
zepetocharacter는 월드 씬에 로드하기 위한 기본 zepeto 캐릭터 인스턴스 단위입니다 zepetocharacter를 제어하려면 스크립트에 다음 import 문을 추가하세요 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) 캐릭터가 즉시 변환합니다 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() { // `zepetocharacter`를 `zepetocharactercreator createbyuserid`를 사용하여 생성합니다 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\ a6oslibe9fqknc62e dvl ] 모션 상태 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에서 재생되는 animation의 전환은 motion v2의 characterstate에 따라 on/off할 수 있습니다 \ true 컨트롤러 입력에 영향을 받는 zepetocharacter currentstate를 끄고 원하는 애니메이션 클립을 제어합니다 👍 constraintstateanimation 사용 예시 캐릭터가 걷는 애니메이션 대신 수영 애니메이션을 사용하도록 하려면, 수영 애니메이션 클립을 새로운 상태에 적용하고 constraintstateanimation을 통해 상태를 고정할 수 있습니다 캐릭터를 이동시키는 동안 제스처 애니메이션을 사용하고 싶다면, 제스처 애니메이션 클립을 새로운 상태에 적용하고 constraintstateanimation을 사용하여 고정된 상태로 캐릭터를 이동시킬 수 있습니다 이것은 animator state에 적용된 매개변수 값을 일시적으로 무시하면서 특정 애니메이션을 강제로 재생하고 싶을 때 사용할 수 있습니다 zepetoanimator 유니티엔진 애니메이터 기능은 zepetoanimator 형태로 제공됩니다 예를 들어, 특정 캐릭터 애니메이터 "상태" 매개변수에 정수 값을 설정하려면 다음을 사용할 수 있습니다 zepetoanimator setinteger("state", 1); 자세한 사용법은 유니티엔진 애니메이터 문서와 아래 샘플 스크립트를 참조하십시오 📘 유니티엔진 애니메이터 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() { // local player creation code (please delete this section if you are already using local player creation code elsewhere) zepetoplayers instance createplayerwithuserid(worldservice userid, new spawninfo(), true); // code for setting the created local player as a zepeto character zepetoplayers instance onaddedlocalplayer addlistener(() => { this zepetocharacter = zepetoplayers instance localplayer zepetoplayer character; // setinteger example 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에서 재생되는 animation의 전환이 꺼진 것을 볼 수 있습니다 statemachine constraintstateanimation 값을 false로 설정하면 원래 상태로 돌아갑니다 charactershadow 제어하기 zepeto charactercontroller 패키지의 1 11 3 버전부터 zepetocharacter shadow 객체에 접근할 수 있는 인터페이스가 추가되었습니다 api 사양 charactershadow 구성 요소 인터페이스 class charactershadow extends unityengine monobehaviour { public target unityengine transform; public autosynctransform boolean; } target 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); }); } }