top drop menu

Recent Post

금요일, 11월 23

프로세싱(115) : P5.js 파티클시스템의 예제

곁다리… 앞서 만든 게임에서 폭파효과를 주기 위해 필요해서 따로 예제를 만들어 보았다.

<!doctype html>
<html lang="ko">
  <head>
   <meta name="viewport" content="width=device-width, user-scalable=no">
   <meta charset="UTF-8">
   <meta name="Description" content="">
   <title>P5.JS 연습</title>
   <style type="text/css">
        body{overflow-x : hidden; overflow-y: hidden; text-align: center;}
      p{
       font-size: .9em;
      }
      #defaultCanvas0{

     }
   </style>
   <!--공통-->
   <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.2/p5.min.js"></script>
   <!--프로젝트 스크립트-->
   <script src="sketch20.js"></script>
   <script src="explode.js"></script>
   <script src="firework.js"></script>
  </head>
  <body>
   <h1>P5.js Example 20(Particle system)</h1>
   <p>마우스를 클릭하세요</p>
  
  </body>
</html>

마우스를 클릭하면 사방으로 퍼지는 파티클이 생성되었다가 사라진다.

var fireworks = []; //array

function setup(){
     createCanvas(640, 480);
}

function draw(){
     background(0);

    for(var i = 0; i < fireworks.length; i++){
         fireworks[i].run();   
         if(fireworks.length>10){
             fireworks.splice(0, 1);
         }
     }
}

// 마우스를 클릭하면 새로운 파티클을 firewroks array에 추가한다.
function mousePressed() {
   fireworks.push(new Firework(mouseX, mouseY));
}

이중구조 배열에 파티클을 담는다.

function Particle(x, y){
     this.pos = createVector(x, y);
     this.vel = createVector(random(-2, 2), random(-2, 2));
     this.acc = createVector(0,0);
     this.alpha = 255;

    this.finished = function(){
         return this.alpha < 0;
     }

    // 중력을 주고 싶으면 사용
     this.applyForce = function(force){
         this.acc.add(force);
     }

    this.update = function(){
         this.vel.add(this.acc);
         this.pos.add(this.vel);
         this.acc.mult(0);
         this.alpha -= 6;
     }

    this.show = function(){
         stroke(255, this.alpha);
         strokeWeight(2);
         point(this.pos.x, this.pos.y);
     }
}


그 결과는 아래 링크에서 확인 하자.

http://visualssing.dothome.co.kr/p5js/p5js_exam20.html

Blogger Widget