如何制作 Canvas 边界
How to make a Canvas boundary
我正在尝试为我的迷你游戏设置 canvas 边界。我已经用一个可以随箭头移动的角色创建了 canvas。我使用 switch 语句来执行此操作,下一步是创建边界,但我不确定该怎么做?这是 Javascript 代码目前的样子:
function place(id,x_pos, y_pos)
{
let element = document.getElementById(id);
element.style.position = "absolute";
element.style.left = x_pos + 'px';
element.style.top = y_pos + 'px';
}
setInterval(update,1);
function update()
{
document.addEventListener('keydown', keyPress);
}
function keyPress(e)
{
let x = e.keyCode;
let character = document.getElementById("character").getBoundingClientRect();
let canvasWidth = document.getElementById("canvas").getBoundingClientRect();
let left = parseInt(character.left,10);
let top = parseInt(character.top,10)
switch (x) {
//left
case 37:
place('character', left-15, top);
break;
//right
case 39:
place('character', left+15, top);
break;
//up
case 38:
place('character', left, top-15);
break;
//down
case 40:
place('character', left, top+15);
break;
}
console.log(x)
return x
}
update()
我假设你所说的边界是你角色移动的边界?如果是这样...
您需要在移动角色之前检查 keyPress 方法。
像这样:
首先,我会考虑将 canvasWidth
重命名为 canvasBound
之类的名称,对于您的字符边界变量也是如此。
if (!(characterBound.left - 15 < canvasBound.left)) {
...move character left...
}
... else do nothing (don't have to actually include this)
类似地重复向上、向下、向右等移动。您必须调整这些值才能使其适合您的 sprite。
我正在尝试为我的迷你游戏设置 canvas 边界。我已经用一个可以随箭头移动的角色创建了 canvas。我使用 switch 语句来执行此操作,下一步是创建边界,但我不确定该怎么做?这是 Javascript 代码目前的样子:
function place(id,x_pos, y_pos)
{
let element = document.getElementById(id);
element.style.position = "absolute";
element.style.left = x_pos + 'px';
element.style.top = y_pos + 'px';
}
setInterval(update,1);
function update()
{
document.addEventListener('keydown', keyPress);
}
function keyPress(e)
{
let x = e.keyCode;
let character = document.getElementById("character").getBoundingClientRect();
let canvasWidth = document.getElementById("canvas").getBoundingClientRect();
let left = parseInt(character.left,10);
let top = parseInt(character.top,10)
switch (x) {
//left
case 37:
place('character', left-15, top);
break;
//right
case 39:
place('character', left+15, top);
break;
//up
case 38:
place('character', left, top-15);
break;
//down
case 40:
place('character', left, top+15);
break;
}
console.log(x)
return x
}
update()
我假设你所说的边界是你角色移动的边界?如果是这样...
您需要在移动角色之前检查 keyPress 方法。
像这样:
首先,我会考虑将 canvasWidth
重命名为 canvasBound
之类的名称,对于您的字符边界变量也是如此。
if (!(characterBound.left - 15 < canvasBound.left)) {
...move character left...
}
... else do nothing (don't have to actually include this)
类似地重复向上、向下、向右等移动。您必须调整这些值才能使其适合您的 sprite。