今天要来加入玩家角色,以及用键盘来控制角色
// 玩家
var player_x;
var player_y;
resetPlayer = () => {
player_x = 660;
player_y = 440;
}
这边要先定义一下按按键的事件
const KEY_LEFT_ARROW = 37;
const KEY_UP_ARROW = 38;
const KEY_RIGHT_ARROW = 39;
const KEY_DOWN_ARROW = 40;
var keyLeft = false;
var keyRight = false;
var keyTop = false;
var keyDown = false;
initInput = () => {
document.addEventListener("keydown", keyPressed);
document.addEventListener("keyup", keyReleased);
}
keyPressed = (evt) => {
setKeyState(evt.keyCode, true);
evt.preventDefault();
}
keyReleased = (evt) => {
setKeyState(evt.keyCode, false);
}
setKeyState = (key, to) => {
if (key == KEY_LEFT_ARROW) {
keyLeft = to;
}
if (key == KEY_RIGHT_ARROW) {
keyRight = to;
}
if (key == KEY_UP_ARROW) {
keyTop = to;
}
if (key == KEY_DOWN_ARROW) {
keyDown = to;
}
}
然後持续监听事件
window.onload = () => {
canvas = document.getElementById('playground');
canvasContext = canvas.getContext('2d');
initInput();
//一秒更新几次画面
var timesPerSec = 30;
setInterval(drawAll, 1000 / timesPerSec);
resetPlayer();
}
监听事件後就可以移动玩家角色了
playerMove = () => {
var next_x = player_x;
var next_y = player_y;
if (keyLeft) {
next_x -= MOVE_SPEED;
}
if (keyRight) {
next_x += MOVE_SPEED;
}
if (keyTop) {
next_y -= MOVE_SPEED;
}
if (keyDown) {
next_y += MOVE_SPEED;
}
if (checkMapBrick(next_x, next_y) == false) {
player_x = next_x;
player_y = next_y;
}
}
记得加入到move中
// 负责处理动作
move = () => {
map_x = player_x - canvas.width / 2;
map_y = player_y - canvas.height / 2;
playerMove();
}
OK 那明天就来做个收尾吧
(以下有说错的,在劳烦各位大大告诉我,感谢各位学长姐) 其实一开始我在想说我的SQL资料库要用哪个语...
Outline: Templates The standard library <vector...
今天要设定DB,我们用docker来装DB,首先我们先装docker brew install do...
slot「插槽」就是将子原件上开个位置,并将外层元件放置在子元件位置上,在复杂的结构中适合使用 插槽...
规则和政策总是无法照顾到所有情况 现实生活有太多细微的差异 政策再怎麽缜密也追不上 花公司的钱 就...