js制作网页游戏-键盘控制人物移动

要实现游戏角色的移动这里写4个方法

当数字键盘旁的上下左右键按时 fx的值就会改变 以此来改变角色的方向

var fx='r'  //初始方向
//绑定键盘事件
document.addEventListener("keydown",key,false);
function key(e) {
  var event = e || window.event;
  // console.log(event.key);
  switch (event.key) {
    case "ArrowRight":
      fx = 'r';
      break;
    case "ArrowLeft":
      fx = 'l';
      break;
    case "ArrowDown":
      fx = 'b';
      break;
    case "ArrowUp":
      fx = 't';
      break;
    }  
}

角色的模型是png格式 这时就需要2张图片的连续切换形成跑的动作 代码:

我这里四个方向共有8张图片 

var n = 0;
var s = 5;
//人物图片切换形成移动的方法  定义 n和s 是每当调用5次qh()方法只执行1次 防止图片切换过快
function qh() {
  if (n % s == 0) {
    if (getUrl(ren.src) == "7_" + fx + "_5.png") {
      ren.src = "images/playImg/7_" + fx + "_6.png";
    } else {
      ren.src = "images/playImg/7_" + fx + "_5.png";
    }
    n = 1;
  }
  n++;
}

当我们可以控制人物上下左右不同跑动的姿势后 再来写角色的移动

var ren = document.getElementById("ren");//获取人物对象
var x = 0, y = 0;  //起始
var xs = 8, ys = 8; //速度
//人物移动的方法
function run() {
  switch (fx) {
    case "r":
      x += xs;
      break;
    case "l":
      x -= xs;
      break;
    case "b":
      y += ys;
      break;
    case "t":
      y -= ys;
      break;
  }
    ren.style.top = y + "px";
    ren.style.left = x + "px";
  }

当然啦 角色是要脱落文档流的,即设置position: absolute;

最后写个定时器 执行这些方法

function start() {
  timer = setInterval(function () {
    qh();
    run();
  }, 33);
}

 

运行图片

 

 

posted @ 2020-12-10 00:14  幻彩希  阅读(1687)  评论(0编辑  收藏  举报