Games conflict. How to determine the side one square ran into the other?



  • I'm writing a js game. The game is presented as a square, the map's timeline is also square. On every foot, I'll determine if there's a player's clash with any of the closest secrets:

    if (a.position.x <= b.position.x + b.width &&
        a.position.x + a.width >= b.position.x &&
        a.position.y <= b.position.y + b.height &&
        a.height + a.position.y >= b.position.y) {
        console.log('Collision!');
    }
    

    So I'm gonna determine if there's a collision in general, but how do you figure out if the collision happened, which side of the player has encountered a mystery? Given that this is a trivial task in the design of games, there's probably some classic algorithm to deal with it. What's he like?



  • Identify the coordinates of the centre of each square, then the difference

    var acenter = { x: a.position.x + a.width / 2, y: a.position.y + a.height / 2 };
    var bcenter = { x: b.position.x + b.width / 2, y: b.position.y + b.height / 2 };
    var d = { x: acenter.x - bcenter.x, y: acenter.y - bcenter.y };
    

    Then you'll have one square to another. For example, if d.x is more than zero, one square to the right of another. Or tangenes can count the angle.




Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2