개인노트-인강

개인 노트 정리) Canvas - 1-05. 파티클에 가속도 주기

roroism 2023. 5. 23. 20:32

인터랙티브 웹 개발 Canvas 인강 정리

 

# 파티클에 가속도 주기

파티클의 이동거리와 속도 뿐만 아니라, 가속도를 주어서 매 프레임마다 속도의 일정한 값을 더하거나 곱해주어서 파티클이 더 빠르게 또는 더 느리게 해주는 방식에 대해서 알아보겠습니다.

class Particle {
  constructor(x, y, radius, vy) {
    this.x = x;
    this.y = y;
    this.radius = radius;
    this.vy = vy;
  }
  update() {
    this.vy += 1;
    this.y += this.vy;
  }
  draw() {
    ctx.beginPath();
    ctx.arc(this.x, this.y, this.radius, 0, (Math.PI / 180) * 360);
    ctx.fillStyle = "orange";
    ctx.fill();
    ctx.closePath();
  }
}

- 위처럼 update 함수 안에 this.vy += 1 를 추가하여 매 프레임마다 y를 1씩 누적시켜 증가시킵니다.- 보통 이런 수치를 this.gravity 또는 this.acc 라고 명명합니다.

class Particle {
  constructor(x, y, radius, vy) {
    this.x = x;
    this.y = y;
    this.radius = radius;
    this.vy = vy;
    this.acc = 1; // 가속도 값 할당
  }
  update() {
    this.vy += this.acc;
    this.y += this.vy;
  }
  // ...

- 위처럼 가속도 값을 정의

- 더 빠르게 속도를 증가하고 싶다면 2이상의 값을 곱해주면 됩니다. (예 : 1.03을 곱해 줌) 

- 1 이하의 값을 곱해주면 반대로 서서히 속도가 줄다가 멈춥니다. (예 : 0.99을 곱해 줌) 이와 같은 마찰과 같은 계수는 변수명을 friction 을 사용하는데 개인 취향입니다.