我不希望我的 "player" 离开屏幕,如何防止这种情况发生?
I don't want my "player" to leave the screen, how do I prevent this?
这是我的JavaScript。在底部附近,您将看到一个用于 keydown 事件的 addEventListener。在那个函数中,keydown 代码就在那里。该代码包含在 if 函数中,if 函数中的内容用于阻止玩家离开 canvas。
function initCanvas() {
var canvas = document.getElementById('my_canvas');
var ctx = canvas.getContext('2d');
var cW = ctx.canvas.width;
var cH = ctx.canvas.height;
var dist = 10;
function Player() {
this.x = 0, this.y = 0, this.w = 50, this.h = 50;
this.render = function() {
ctx.fillStyle = "orange";
ctx.fillRect(this.x, this.y, this.w, this.h);
}
}
var player = new Player();
player.x = 100;
player.y = 225;
function animate() {
ctx.fillStyle = '#000';
ctx.fillRect(0, 0, canvas.width, canvas.height);
player.render();
}
var animateInterval = setInterval(animate, 30);
document.addEventListener('keydown', function(event) {
var key_press = String.fromCharCode(event.keyCode);
if (//I don't know what should go here) {
if (key_press == "W") {
player.y -= dist;
} else if (key_press == "S") {
player.y += dist;
} else if (key_press == "A") {
player.x -= dist;
} else if (key_press == "D") {
player.x += dist;
}
}
});
}
window.onload = initCanvas();
document.addEventListener('keydown', function(event) {
var key_press = String.fromCharCode(event.keyCode);
if (//I don't know what should go here) {
if (key_press == "W" && player.y >= dist) {
player.y -= dist;
} else if (key_press == "S" && player.y <= (cH - dist)) {
player.y += dist;
} else if (key_press == "A" && player.x >= dist) {
player.x -= dist;
} else if (key_press == "D" && player.x < (cW - dist)) {
player.x += dist;
}
}
});
额外的检查将检查他不在 canvas 的边缘,也不在距离边缘 < dist
的距离。 假设左上角为(0,0).
请注意,当用户距离 < dist
一定距离时,将用户移动到 canvas 的边缘会更好。我会把这个留给你。
这是我的JavaScript。在底部附近,您将看到一个用于 keydown 事件的 addEventListener。在那个函数中,keydown 代码就在那里。该代码包含在 if 函数中,if 函数中的内容用于阻止玩家离开 canvas。
function initCanvas() {
var canvas = document.getElementById('my_canvas');
var ctx = canvas.getContext('2d');
var cW = ctx.canvas.width;
var cH = ctx.canvas.height;
var dist = 10;
function Player() {
this.x = 0, this.y = 0, this.w = 50, this.h = 50;
this.render = function() {
ctx.fillStyle = "orange";
ctx.fillRect(this.x, this.y, this.w, this.h);
}
}
var player = new Player();
player.x = 100;
player.y = 225;
function animate() {
ctx.fillStyle = '#000';
ctx.fillRect(0, 0, canvas.width, canvas.height);
player.render();
}
var animateInterval = setInterval(animate, 30);
document.addEventListener('keydown', function(event) {
var key_press = String.fromCharCode(event.keyCode);
if (//I don't know what should go here) {
if (key_press == "W") {
player.y -= dist;
} else if (key_press == "S") {
player.y += dist;
} else if (key_press == "A") {
player.x -= dist;
} else if (key_press == "D") {
player.x += dist;
}
}
});
}
window.onload = initCanvas();
document.addEventListener('keydown', function(event) {
var key_press = String.fromCharCode(event.keyCode);
if (//I don't know what should go here) {
if (key_press == "W" && player.y >= dist) {
player.y -= dist;
} else if (key_press == "S" && player.y <= (cH - dist)) {
player.y += dist;
} else if (key_press == "A" && player.x >= dist) {
player.x -= dist;
} else if (key_press == "D" && player.x < (cW - dist)) {
player.x += dist;
}
}
});
额外的检查将检查他不在 canvas 的边缘,也不在距离边缘 < dist
的距离。 假设左上角为(0,0).
请注意,当用户距离 < dist
一定距离时,将用户移动到 canvas 的边缘会更好。我会把这个留给你。