Im Grunde habe ich ein kleines Spiel gemacht, aber was ich mich wundere, ist, wie ich mein erstelltes Objekt nicht außerhalb der Linien der Leinwand gehen lasse. Als er eine Grenze erreicht, möchte ich, dass er aufhört. Jede Hilfe wird geschätztLassen Sie ein Canvas-Objekt im Canvas-Bereich stoppen?
0
A
Antwort
0
Hallo dort, ich machte eine kleine Demo game mein Selbst. In diesem Spiel gibt es das, wonach du suchst. Arbeits Demo Sie es here
findenSo was habe ich
1) Spur Benutzer Tastatur drücken
document.onkeydown = function(e) {
e = e || window.event;
if(e.keyCode == "37") player.move("left");
else if(e.keyCode == "38") player.move("up");
else if(e.keyCode == "39") player.move("right");
else if(e.keyCode == "40") player.move("down");
};
2) bekommen eine grundlegende Konfiguration der Spielerposition (Mitte in meinem Fall
war)var player = {
x: Math.round((w/2)/objectSizes),
y: Math.round((h/2)/objectSizes)
}
3) dann auf die Funktion play.move verfolgen i die Richtung und alles tun, die Einschränkungen
player.move = function (Richtung) {
/**
* A temporary object to hold the current x, y so if there is a collision with the new coordinates to fallback here
*/
var hold_player = {
x: player.x,
y: player.y
};
/**
* Decide here the direction of the user and do the neccessary changes on the directions
*/
switch(direction) {
case "left":
player.x -= speed/modifier;
if(player.currentDirection == "stand") {
player.currentDirection = "left-1";
} else if(player.currentDirection == "left-1") {
player.currentDirection = "left-2";
} else if(player.currentDirection == "left-2") {
player.currentDirection = "left-1";
} else {
player.currentDirection = "left-1";
}
break;
case "right":
player.x += speed/modifier;
if(player.currentDirection == "stand") {
player.currentDirection = "right-1";
} else if(player.currentDirection == "right-1") {
player.currentDirection = "right-2";
} else if(player.currentDirection == "right-2") {
player.currentDirection = "right-1";
} else {
player.currentDirection = "right-1";
}
break;
case "up":
player.y -= speed/modifier;
if(player.currentDirection == "stand") {
player.currentDirection = "up-1";
} else if(player.currentDirection == "up-1") {
player.currentDirection = "up-2";
} else if(player.currentDirection == "up-2") {
player.currentDirection = "up-1";
} else {
player.currentDirection = "up-1";
}
break;
case "down":
player.y += speed/modifier;
if(player.currentDirection == "stand") {
player.currentDirection = "down-1";
} else if(player.currentDirection == "down-1") {
player.currentDirection = "down-2";
} else if(player.currentDirection == "down-2") {
player.currentDirection = "down-1";
} else {
player.currentDirection = "down-1";
}
break;
}
/**
* if there is a collision just fallback to the temp object i build before while not change back the direction so we can have a movement
*/
if(check_collision(player.x, player.y)) {
player.x = hold_player.x;
player.y = hold_player.y;
}
/**
* If player finds the coordinates of pokeball the generate new one, play the sound and update the score
*/
if(player.x == pokeball.x && player.y == pokeball.y) { // found a pokeball !! create a new one
console.log("found a pokeball of "+pokeball.spritePosition+"! Bravo! ");
pokePick.pause();
pokePick.currentTime = 0;
pokePick.play();
score += 1;
pokeball.generatePosition();
}
update();
};
Dann endlich i diese Funktion haben keine Kollision
/**
* Our function that decides if there is a collision on the objects or not
* @function
* @name check_collision
* @param {Integer} x - The x axis
* @param {Integer} y - The y axis
*/
function check_collision(x, y) {
var foundCollision = false;
if(((x > 3 && x < 9) && y == 6) || ((x > 4 && x < 9) && (y == 5 || y == 4 || y == 3))) { //collision on house
console.log("on house");
foundCollision = true;
}
if((x<1 || x>20) ||
(y<2 || y>20) ||
((y > 0 && y < 4) && (x == 20 || x == 19)) || //right corner
((y > 0 && y < 4) && (x == 2 || x == 3)) || //left corner
((y > 18) && (x == 2 || x == 3)) || //left corner
((x > 17) && (y == 19 || y == 20)) || //left corner
((x > 19) && (y == 17 || y == 18)) //left corner 2
) {
console.log("lost on the woods");
foundCollision = true
}
return foundCollision;
}
zu überprüfen
Verwandte Themen
- 1. Lassen Sie ein Element blinken und stoppen Sie es, wenn auf ein anderes Element geklickt wird
- 2. Lassen Sie den Empfänger nach dem Sender stoppen
- 3. Lassen Sie Sonderzeichen im Textfeld
- 4. Lassen Sie ein Objekt sofort im Arc-Modus
- 5. So stoppen Sie dieses Schlafprogramm im Racket
- 6. Lassen Sie NUnit nicht beim ersten Fehler stoppen
- 7. So stoppen Sie ein IntervalObservable
- 8. clojure - ein Symbol im Inneren lösen lassen
- 9. Lassen Sie Funktion Ausgabe im Terminalfenster Python
- 10. Stoppen Sie einen Zähler im Hintergrund
- 11. Lassen Sie ein HTML-Element als Anker fungieren, um den Bildlauf zu stoppen
- 12. Lassen Sie Ihre App im Hintergrund laufen
- 13. Lassen Sie ein Objekt mit drei Js
- 14. Lassen Sie eine Datei im Browser öffnen, anstatt sie herunterzuladen
- 15. So stoppen Sie ein MVC RedirectToRouteResult JavaScript?
- 16. Java Stoppen Sie ein GIF von Animieren
- 17. Stoppen Sie ein PHP Curl Download
- 18. Stoppen Sie ein lang laufendes PS-Cmdlet
- 19. Lassen Sie ein droppable div dynamisch expandieren, wenn ich ein Element in es fallen lassen
- 20. lassen Sie var oder var zu lassen
- 21. So stoppen Sie die Aktualisierung der Webseite, um die Fehlermeldung verschwinden zu lassen
- 22. Stoppen Sie pylab Overlay Plots?
- 23. Haben Objekt ein anderes Objekt im Array rotieren lassen?
- 24. Kann ich im stillen Modus ein iPhone vibrieren lassen?
- 25. Stoppen einer CSS-Animation, sondern lassen ihre aktuellen Iteration beenden
- 26. Stoppen Sie ein Python-Skript von der Ausführung
- 27. Haskell lassen ..... in lassen Sie sich ... in
- 28. JavaScript-Funktion stoppen, nachdem sie bereits im Browser aufgerufen wurde
- 29. Lassen Sie scheitern, wenn Komponententests fehlschlagen
- 30. So stoppen Sie das Öffnen des PowerPoints im Storyboard-Tab