[Nature of Code] processing 4. 마우스를 향해 가속되는 객체들
2023. 2. 1. 00:13
반응형
Mover[] movers = new Mover[20];
void setup() {
size(200, 200);
smooth();
background(77);
for(int i=0; i<movers.length; i++){
//배열을 초기화한다.
movers[i] = new Mover();
}
}
void draw() {
background(99);
for (int i=0; i<movers.length; i++){
//배열 안에 있는 객체의 함수를 호출한다.
movers[i].update();
movers[i].checkEdges();
movers[i].display();
}
}
class Mover {
PVector location;
PVector velocity;
PVector acceleration;
float topspeed;
Mover(){
location = new PVector(random(width), random(height));
velocity = new PVector(0,0);
topspeed = 4;
}
//가속도와 관련된 코드가 들어있는 함수
void update(){
//마우스를 향하는 벡터를 생성
PVector mouse = new PVector(mouseX, mouseY);
PVector dir = PVector.sub(mouse, location);
//벡터를 정규화함
dir.normalize();
//크기를 변경함
dir.mult(0.5);
//만들어진 벡터를 가속도로 설정
acceleration = dir;
//실제로 물체를 움직이는 코드.가속도로 속도를 변경하고, 속도로 위치를 변경
velocity.add(acceleration);
velocity.limit(topspeed);
location.add(velocity);
}
void display(){
stroke(0);
fill(175);
ellipse(location.x, location.y, 16, 16);
}
void checkEdges() {
if(location.x > width){
location.x = 0;
} else if(location.x < 0){
location.x = width;
}
if(location.y > height){
location.y = 0;
} else if(location.y < 0){
location.y = height;
}
}
}
결과물
중력은 가까울 수록 강하게 작용해야 한다. 즉, 객체가 마우스에 가까워지면 가속도가 더 커진다.
반응형
'한 걸음 > Creative coding' 카테고리의 다른 글
[Nature of Code] processing 6. rotate 함수를 이용한 회전 운동, 극 좌표를 직교 좌표로 변환 (0) | 2023.02.03 |
---|---|
[Nature of Code] processing 5. 힘 생성 (1) | 2023.02.02 |
[Nature of Code] processing 3. 속도/가속도와 벡터를 활용한 이동 (0) | 2023.02.01 |
[Nature of Code] processing 2. 벡터 (0) | 2023.01.30 |
[Nature of Code] processing 1. 튕기는 공 만들기 (0) | 2023.01.28 |