【发布时间】:2018-09-15 23:57:44
【问题描述】:
我正在尝试制作这个 JavaScript 小游戏。我是编码新手,不确定是什么导致了下降元素的速度。我如何操纵这些元素的下降速度?
var canvas = document.getElementById("c1"),
ctx = canvas.getContext("2d"),
width = 400,
height = 400,
player = {
x: 200,
y: 200,
width: 10,
height: 10
},
keys = [];
canvas.width = width;
canvas.height = height;
var block = {
width: 150,
height: 25,
velocity: 3,
x: 125,
y: 300
};
var wasTouching = false;
function update() {
if (keys[38] || keys[32]) {
player.y -= 5;
}
if (keys[39]) {
player.x += 5;
}
if (keys[37]) {
player.x -= 5;
}
if (keys[40]) {
player.y += 5;
}
if (player.width + player.x > 400) {
player.x -= 5;
}
if (player.width + player.x < 10) {
player.x += 5;
}
if (player.height + player.y < 10) {
player.y = player.y + 15;
}
if (player.height + player.y > 400) {
player.y -= 5;
}
//block 1
if (player.x < block.x + block.width && player.x + player.width > block.x &&
player.y < block.y + block.height && player.y + player.height >= block.y) {
if(!wasTouching) {
//console.log("The objects are touching");
}
player.y = block.y - player.height;
wasTouching = true;
} else {
wasTouching = false;
}
ctx.beginPath();
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "red";
ctx.fillRect(player.x, player.y, player.width, player.height);
ctx.beginPath();
ctx.fillStyle = "blue";
ctx.fillRect(block.x, block.y, block.width, block.height);
function gravity() {
if (player.y < 390 && !wasTouching) {
player.y = player.y + 2;
}
}
function moveblock() {
if( block.x < 400){
block.x = block.velocity;
}
}
requestAnimationFrame(update);
requestAnimationFrame(gravity);
requestAnimationFrame(moveblock);
}
document.body.addEventListener("keydown", function(e) {
keys[e.keyCode] = true;
});
document.body.addEventListener("keyup", function(e) {
keys[e.keyCode] = false;
});
window.addEventListener("load", function() {
update();
});
<html lang="en">
<head>
<meta charset="UTF-8">
<title> Test File </title>
<style type="text/css">
canvas {
border: 1px solid black;
}
body {
margin 0;
}
</style>
</head>
<body>
<canvas id= "c1" width = "400" height = "400"></canvas>
</body>
</html>
这是代码,如果你想用它来看看我做错了什么,我还没有找到解决方案,如果你能找到,那就太好了。
【问题讨论】:
标签: javascript html html5-canvas