Node.js - Идеальная эластичность c обнаружение столкновений и реакция между кругом и прямоугольником - PullRequest
0 голосов
/ 20 февраля 2020

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

Пока у меня есть этот код:

// Check if b1 is a rectangle and b2 a circle
if (!b1.collisionRadius && b2.collisionRadius) {
  if (Physics.circleRectangleCollision(b1, b2)) {
    b1.collision = b2.uid;
    b2.collision = b1.uid;

    if(b1.isStatic) {}
    else if(b2.isStatic) {}
    else {}
    // Collision reaction
  }
}

// Physics.circleRectangleCollision
circleRectangleCollision(rect, circle) {
  var distx = Math.abs(circle.position.x - rect.position.x);
  var disty = Math.abs(circle.position.y - rect.position.y);

  if (distx > (rect.width / 2 + circle.collisionRadius)) { return false; }
  if (disty > (rect.height / 2 + circle.collisionRadius)) { return false; }

  if (distx <= (rect.width / 2)) { return true; }
  if (disty <= (rect.height / 2)) { return true; }

  var hypot = (distx - rect.width / 2) * (distx - rect.width / 2) +
    (disty - rect.height / 2) * (disty - rect.height / 2);

  return (hypot <= (circle.collisionRadius * circle.collisionRadius));
}

(код) https://glitch.com/edit/#! / Demostanis-worlds-физика -инжин

Что мне для этого сделать?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...