Нужно Javascript Обнаружение столкновений в App Lab - PullRequest
0 голосов
/ 11 апреля 2020

Я делаю игру в App Lab на code.org. Игра основана на том, что Игрок 2 сбрасывает метеоры, от которых Игрок 1 должен увернуться. Тем не менее, я понятия не имею, как сделать обнаружение столкновений. Может кто-нибудь, пожалуйста, помогите? Мне нужна базовая c система обнаружения столкновений, чтобы понизить здоровье Игрока 1, когда метеорит ударит их. Не стесняйтесь использовать значения x и y Игрока 1, а также добавлять свои собственные переменные. Я дам привет человеку, который мне поможет. Вот мой код:

var x = 104;
var y = 172;
var p1HP = 100;
var meteorCount = 25;
var mousex;
var mousey;
var meteorNum = 0;
//Code below triggers a screen change and music when a button is pressed.
onEvent("startButton", "click", function() {
  setScreen("playscreen");
  playSound("Brobot-Battle-(8-BIT)---Super-Paper-Mario-(192--kbps).mp3", false);
});
//Code below is basic movement for player.
onEvent("playscreen", "keydown", function(event) {
  if (event.key=="w") {
    getP1Pos();
    setPosition("image2", x, y-8, 100, 100);
  } else if (event.key=="a") {
    getP1Pos();
    setPosition("image2", x-8, y, 100, 100);
  } else if (event.key=="d") {
    getP1Pos();
    setPosition("image2", x+8, y, 100, 100);
  } else if (event.key=="s") {
    getP1Pos();
    setPosition("image2", x, y+8, 100, 100);
  }
});
function getP1Pos() {
  x = getXPosition("image2");
  y = getYPosition("image2");
}
//code below resets the game when a retry button is pressed
onEvent("retry"||"retry2", "click", function( ) {
  setScreen("startscreen");
  p1HP = 100;
  meteorCount = 20;
  setText("p1HP", "P1 HP: "+p1HP);
  setText("meteorCounter", "P2 METEORS: "+meteorCount);
});
//code below records mouse position
onEvent("playscreen", "mousemove", function(mouse) {
  mousex = mouse.x;
  mousey = mouse.y;
});
//code below makes the meteors go to the mouse and fall when the screen is clicked
onEvent("playscreen", "click", function() {
  stopTimedLoop();
  if (meteorNum==5) {
    meteorNum = 1;
  } else {
    meteorNum = meteorNum+1;
  }
  meteorCount = meteorCount-1;
  if (meteorCount==-1) {
    setScreen("p1victory");
    stopSound("Brobot-Battle-(8-BIT)---Super-Paper-Mario-(192--kbps).mp3");
  } else {
    setPosition("meteor"+meteorNum, mousex-20, mousey-20, 100, 100);
    timedLoop(60, function() {
      setPosition("meteor"+meteorNum, getXPosition("meteor"+meteorNum), getYPosition("meteor"+meteorNum) + 40, 100, 100);
    });
    setText("meteorCounter", "P2 METEORS: "+meteorCount);
  }
});
//Insert collision detection algorithm here
...