Как сделать так, чтобы несколько объектов круга не переходили друг в друга при обнаружении столкновений? - PullRequest
1 голос
/ 17 мая 2019

У меня есть от 1 до 64 сгустков, и все они перемещаются в положение моей мыши.Но я хочу, чтобы они не переходили друг в друга, другими словами, обнаружение столкновений по кругу.Однако я не могу сделать его гладким, а также толкать новые объекты после того, как они перемещаются в первый раз?

Пробовал проверять каждый шарик на предмет столкновения с другими шариками.Если сглаживание истинно, тогда установите расстояние между каплями до их накопленных радиусов.

Так я написал функцию столкновения, но этот способ делает слишком быстрый сброс позиций.Я хочу, чтобы это был плавный, но быстрый переход.Как вместо 1 кадра, скажем, 10 кадров.И еще одна проблема заключается в том, что когда два объекта удалены от их радиусов, они могут столкнуться с новыми, и это приведет к повторному запуску этого кода, а затем все капли сойдут с ума.

this.collide = function() {
   var length = this.blobs.length; // How many blobs?

   this.blobs.forEach(function(item, index) {
      for (var i = 0; i < length; i++) {

         // Get absolute distance between two vectors
         var v0 = vectorFromTo(blob.blobs[i].pos.x, blob.blobs[i].pos.y, //[x2, y2]
                               item.pos.x, item.pos.y); //[x1, y1]

         // if colliding, set distance between to their accumulated radiuses
         if (magnitude(v0) < blob.blobs[i].r + item.r) {
         item.pos.add(v0.setMag(magnitude(v0) - (blob.blobs[i].r + item.r))); 
         }
      }
   });
}

У меня нетЯ пытался написать еще один способ сделать это, потому что я не узнал о векторах в школе, но я немного их понимаю.Но то, что я думаю, сработает, если я проверю на столкновение, и если они сталкиваются, они идут в противоположных направлениях на 50% от дефицитного расстояния, а затем они проверяют, попали ли они в новые капли.Но это потребует физики, верно?Потому что тогда ему придется что-то делать с массой и скоростью шарика, чтобы знать, что случится с новым шариком, в который он врезается?

РЕДАКТИРОВАТЬ:

Это то, что я ищудля: https://youtu.be/QvlhRGtlcsw

Вот как это выглядит в данный момент: https://youtu.be/QEpHnCgomqY

...