텍스트 코딩내장 모듈TWEEN다양한 트윈 함수 소개

다양한 트윈 함수 소개

트윈을 조작할 수 있는 여러 함수들에 대해 안내합니다.

트윈 모듈에는 단순히 트윈을 생성하고 시작하는 것 이외의 조작을 할 수 있는 함수들이 존재합니다.

.startFromCurrentValues()

트윈을 시작하는 다른 방법 중 하나입니다. start와 달리 트윈의 대상이 되는 객체가 현재 가진 값을 시작점으로 설정합니다.

// startFromCurrentValues Example
 
let upTween;
 
function Start() {
  const startPosition = { x: 0, y: 0, z: 0 };
 
  upTween = new TWEEN.Tween(startPosition);
 
  upTween
    .to({ y: "+1" }, 1000)
 
    .onUpdate(() => {
      this.position.y = startPosition.y;
    });
}
 
// compare this two function in your project
 
function OnKeyDown(event) {
  if (event.code === "KeyM") {
    upTween.start();
  }
}
 
function OnKeyDown(event) {
  if (event.code === "KeyM") {
    upTween.startFromCurrentValues();
  }
}

.stop()

실행한 트윈을 멈추고 싶은 경우 사용할 수 있습니다.

// stop Example
 
let upTween;
 
function Start() {
  const startPosition = { x: 0, y: 0, z: 0 };
 
  upTween = new TWEEN.Tween(startPosition);
 
  upTween
    .to({ y: "+5" }, 1000)
 
    .onUpdate(() => {
      this.position.y = startPosition.y;
    });
}
 
function OnKeyDown(event) {
  if (event.code === "KeyM") {
    upTween.start();
  }
 
  // if you press KeyN then this object`s tween stops.
 
  if (event.code === "KeyN") {
    upTween.stop();
  }
}

.repeat()

원하는 횟수만큼 트윈을 반복하고싶은 경우 사용할 수 있습니다.

// repeat Example
 
let upTween;
 
function Start() {
  const startPosition = { x: 0, y: 0, z: 0 };
 
  upTween = new TWEEN.Tween(startPosition);
 
  upTween
    .to({ y: startPosition.y + 1 }, 1000)
 
    .onUpdate(() => {
      this.position.y = startPosition.y;
    });
}
 
function OnKeyDown(event) {
  // The tween definded in Start function repeats 3 times and stops.
 
  if (event.code === "KeyM") {
    upTween.repeat(3).start();
  }
}

.chain()

여러 개의 트윈을 연속적으로 실행하고싶은 경우 사용할 수 있습니다.

// chain Example
 
let upTween;
 
let downTween;
 
function Start() {
  const startPosition = { x: 0, y: 0, z: 0 };
 
  upTween = new TWEEN.Tween(startPosition);
 
  upTween
    .to({ y: "+3" }, 1000)
 
    .onUpdate(() => {
      this.position.y = startPosition.y;
    });
 
  downTween = new TWEEN.Tween(startPosition);
 
  downTween
    .to({ y: "-3" }, 1000)
 
    .onUpdate(() => {
      this.position.y = startPosition.y;
    });
}
 
function OnKeyDown(event) {
  // The downTween runs immediately after the upTween ends.
 
  if (event.code === "KeyM") {
    upTween.chain(downTween).start();
  }
}

.delay()

트윈의 실행을 특정한 시간만큼 유예하고 싶은 경우 사용할 수 있습니다.

// delay Example
 
let upTween;
 
let downTween;
 
function Start() {
  const startPosition = { x: 0, y: 0, z: 0 };
 
  upTween = new TWEEN.Tween(startPosition);
 
  upTween
    .to({ y: "+3" }, 1000)
 
    .onUpdate(() => {
      this.position.y = startPosition.y;
    });
 
  downTween = new TWEEN.Tween(startPosition);
 
  downTween
    .to({ y: "-3" }, 1000)
 
    .onUpdate(() => {
      this.position.y = startPosition.y;
    });
}
 
function OnKeyDown(event) {
  // The tween runs 1000 milliseconds after start is executed.
 
  if (event.code === "KeyM") {
    upTween.delay(1000).start();
  }
}