CREATE YOUR WORLD
User Interface
Gyro 센서 활용하기
8분
zepeto 월드를 만들 때, 장치의 기울기에 따라 다양한 월드 플레이 아이디어를 구현하기 위해 자이로 센서를 사용할 수 있습니다 이 가이드는 zepetoscript 내에서 input gyro를 활용하는 방법을 보여줍니다 📘 자이로스코프 https //docs unity3d com/scriptreference/gyroscope html https //docs unity3d com/scriptreference/gyroscope html 객체 설정하기 1\) 계층 추가 > \[+] > 3d 객체 > 구 객체를 장면에 추가합니다 2\) 객체의 이름을 ball로 변경하고 rigidbody 구성 요소를 추가합니다 스크립트 작성하기 1\) typescript를 추가하고 스크립트 이름을 rollingball로 변경합니다 아래와 같이 샘플 스크립트를 작성합니다 import { zepetoscriptbehaviour } from 'zepeto script'; import { input, systeminfo, vector3, rigidbody } from 'unityengine'; import { text } from 'unityengine ui'; export default class rollingball extends zepetoscriptbehaviour { public debugtext text; public velocitymultiplier number = 100; private rollingball rigidbody; start() { // 이 스크립트와 동일한 gameobject에 연결된 rigidbody 구성 요소 가져오기 this rollingball = this getcomponent\<rigidbody>(); // 장치가 자이로스코프를 지원하는지 확인 if (systeminfo supportsgyroscope) { // 자이로스코프 활성화 input gyro enabled = true; } else { // 자이로스코프가 지원되지 않는 경우 스크립트 비활성화 console log("이 장치는 자이로스코프를 지원하지 않습니다 "); input gyro enabled = false; } } update() { // 입력 장치의 자이로스코프가 활성화되어 있는지 확인 if (input gyro enabled) { // x 및 z 축을 따라 자이로 값을 읽기 // ball 객체의 안정적인 움직임을 위해 소수점 첫째 자리로 반올림 let gyrovaluex = math round(input gyro gravity x 10) / 10; let gyrovaluez = math round(input gyro gravity y 10) / 10; // gyrovaluex 및 gyrovaluez로 ball의 속도 설정 this rollingball velocity = new vector3(gyrovaluex this velocitymultiplier, 0, gyrovaluez this velocitymultiplier); // 현재 자이로 값을 화면에 표시 this debugtext text = "input gyro gravity " + input gyro gravity tostring(); } } } 스크립트 설명 ball 객체에 부착된 rigidbody 구성 요소를 가져옵니다 다음 값을 반올림합니다 input gyro gravity x 및 input gyro gravity z 값을 반올림하여 gyrovaluex, gyrovaluez 값을 얻습니다 gyrovaluex 및 gyrovaluez 값을 velocitymultiplier로 곱하여 ball 객체에 속도를 부여합니다 velocity 다음 값은 input gyro gravity 값이 text ui를 통해 화면에 표시됩니다 📘 자이로스코프 gravity https //docs unity3d com/scriptreference/gyroscope gravity html https //docs unity3d com/scriptreference/gyroscope gravity html 2\) 작성한 rollingball zepetoscript를 ball 객체에 추가합니다 hierarchy 창에서 zepetoscript inspector 창에 표시된 속성에 text ui를 드래그 앤 드롭하여 연결합니다 모바일에서 테스트하기 1\) qr 모바일 테스트로 예제 월드를 실행합니다 2\) 볼 객체는 장치 기울기에 따라 움직입니다 ❗️ 주의 다음 사항에 유의하십시오 input gyro 는 모바일 환경에서만 작동합니다 예제 적용하기 input gyro를 적용하여 zepeto 월드 내에서 zepeto 캐릭터를 이동할 수 있습니다 1\) typescript를 추가하고 스크립트 이름을 gyromovement로 변경합니다 아래와 같이 샘플 스크립트를 작성합니다 import { zepetoscriptbehaviour } from 'zepeto script'; import { input, systeminfo, vector3 } from 'unityengine'; import { zepetocharacter, zepetoplayers, localplayer } from 'zepeto character controller'; export default class gyromovement extends zepetoscriptbehaviour { private localcharacter zepetocharacter; start() { // 로컬 플레이어가 추가될 때의 리스너 추가 zepetoplayers instance onaddedlocalplayer addlistener(() => { this localcharacter = zepetoplayers instance localplayer zepetoplayer character; }); // 장치가 자이로스코프를 지원하는지 확인 if (systeminfo supportsgyroscope) { // 자이로스코프 활성화 input gyro enabled = true; } else { // 자이로스코프가 지원되지 않는 경우 스크립트 비활성화 console log("이 장치는 자이로스코프를 지원하지 않습니다 "); input gyro enabled = false; } } update() { if (input gyro enabled) { // 자이로스코프 중력의 x축 값 가져오기\\ // 캐릭터의 안정적인 움직임을 위해 소수점 첫째 자리로 반올림 const gyrovalue = math round(input gyro gravity x 10) / 10; const direction = new vector3(0, 0, gyrovalue); // 로컬 캐릭터 이동 this localcharacter move(direction); } } } 스크립트 설명 로컬 플레이어가 장면에 추가되면 zepeto 캐릭터 인스턴스를 받습니다 값을 반올림하여 gyrovalue 값을 얻습니다 zepeto 캐릭터를 z축 방향으로 이동시키려면 direction 을 매개변수로 move() 함수에 전달합니다 2\) 장면에 gameobject를 추가하고 이름을 gyrogravity로 변경합니다 생성한 gyromovement zepetoscript를 추가합니다 3\) qr 모바일 테스트로 예제 월드를 실행할 때 zepeto 캐릭터가 장치의 기울기에 따라 이동합니다 👍 팁 이 예제에서 사용된 input gyro gravity 외에도 다양한 input gyro 함수를 사용할 수 있습니다 이것을 다양한 아이디어에 적용할 수 있습니다 zepeto에서 재미있는 월드를 출시해 보세요!