Управление значением Y массива капель воды при обработке - PullRequest
0 голосов
/ 01 декабря 2019

Я сделал анимацию, где падает много линий (капель воды);щелкая левой кнопкой мыши, вы просто замедляете их. Я также хочу контролировать их значение Y при падении: когда я щелкаю правой кнопкой мыши, они все следуют за ним.

Drop[] drops = new Drop[270]; // array 

void setup() {
     size(640, 360); // size of the window
     for (int i = 0; i < drops.length; i++) {
         drops[i] = new Drop();
    }
}

void draw() {

    background(52);

    for (int i = 0; i < drops.length; i++) {
        drops[i].fall(); 
        drops[i].show(); 
        drops[i].noGravity(); 
    }
}

И класс Drop:

class Drop {
    float x = random(width); // posizione x di partenza
    float y = random(-180,-100); // posizione y di partenza
    float yspeed = random(2,7); // velocità random

    void fall() { 
        y += yspeed;

        if (y > height) { // riposizionamento delle gocce
            y = random(-180,-100);
        }
    }

    void noGravity(){ //
        if(mousePressed && (mouseButton == LEFT)){
            y -= yspeed*0.75;
        }

        if(mousePressed && (mouseButton == RIGHT)){
              this.y = mouseY + yspeed;
        }
    }

    void show() { // funzione per l'aspetto delle gocce
        stroke(52, 82, 235);
        line(x,y,x,y+20);
    }
}

Функция, о которой я говорю, - noGravity (), но когда я щелкаю правой кнопкой мыши, целое число следующих за моей мышью, всекапли просто выстраиваются в линию. Какие-нибудь простые предложения? Спасибо всем !!!

1 Ответ

0 голосов
/ 01 декабря 2019

Изменение положения y при щелчке правой кнопкой мыши не то же самое, что изменение скорости движения капель. Вы, вероятно, просто не заметили.

Здесь, попробуйте изменить часть, где вы ловите правый клик в noGravity() для этих строк:

yspeed = abs(yspeed); //this is so the drops behaves normally again when you stop right clicking
if(mousePressed && (mouseButton == RIGHT)){
  if (mouseY < this.y) { //this makes the drops go toward the mouse position
    yspeed = yspeed * -1; //going up is negative speed
  }
}

Это круто. Обратите внимание, что, если вы удерживаете правую кнопку мыши нажатой, когда вы перемещаете мышь, капли пытаются следовать с их собственной скоростью. Я понятия не имею, что вы делаете, но мне это нравится.

Я не был уверен в желаемом результате, поэтому дайте мне знать, если я неправильно понял.

...