我想创建一个移动的角色,我的代码不起作用? [英] I am trying to create a moving character and my code is not working?

查看:77
本文介绍了我想创建一个移动的角色,我的代码不起作用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Html和Javascript中,我试图使用wasd键移动角色。我尽我所能,但我无法让它发挥作用。你能告诉我怎么做吗?另外,你可以非常具体......我是一个初学者。这是代码。





In Html and Javascript I am trying to make the character move with the wasd keys. I have tried everything I can, and I can't get it to work. Can you tell me how to do it. Also, can you be pretty specific... I kind of a beginner. Here is the code.


<!DOCTYPE html>
<canvas id="ctx" height="800" width="1500" style="border:1px solid #000000;"></canvas>
<script>

 var ctx = document.getElementById("ctx").getContext("2d");

  var player = {
    x: 750,
    y: 400,
    pressW: false,
    pressS: false,
    pressA: false,
    pressD: false,
  };

  ctx.fillStyle = "blue";
  ctx.rect(player.x, player.y, 50,50);

  document.onkeydown = function(event){
    if (event.keyCode == 87) //w
      player.pressW = true;
    else if (event.keycode == 83) //s
      player.pressS = true;
    else if (event.keyCode == 65) //a
      player.pressA = true;
    else if (event.keycode == 68) //d
      player.pressD = true;
  }

  document.onkeyup = function(event){
    if (event.keyCode == 87) //w
      player.pressW = false;
    else if (event.keycode == 83) //s
      player.pressS = false;
    else if (event.keyCode == 65) //a
      player.pressA = false;
    else if (event.keycode == 68) //d
      player.pressD = false;
  }

  function updatePlayerPosition(){
    if (player.pressW == true)
      player.y -= 10;
    if (player.pressS == true)
      player.y += 10;
    if (player.pressA == true)
      player.x -= 10;
    if (player.pressD == true)
      player.x += 10;
  }

  function drawPlayer(){
    ctx.fillStyle = "blue";
    ctx.fillRect(player.x, player.y, 50,50);
  }

  function Update(){
    ctx.clearRect(0,0,1500,800)
    updatePlayerPosition();
    drawPlayer();
  }

setInterval(Update, 100);

</script>
<style>

  canvas {
  padding-left: 0;
  padding-right: 0;
  margin-left: auto;
  margin-right: auto;
  display: block;
}

</style>





我的尝试:



我已尽力而为,我无法让它工作



What I have tried:

I have tried everything I can, and I can't get it to work

推荐答案




您的代码唯一的问题是区分大小写。



Hi,

The only problem with your code is of Case sensitivity.

document.onkeydown = function(event){
    if (event.keyCode == 87) //w
      player.pressW = true;
    else if (event.keyCode == 83) //s
      player.pressS = true;
    else if (event.keyCode == 65) //a
      player.pressA = true;
    else if (event.keyCode == 68) //d
      player.pressD = true;
  }
 
  document.onkeyup = function(event){
    if (event.keyCode == 87) //w
      player.pressW = false;
    else if (event.keyCode == 83) //s
      player.pressS = false;
    else if (event.keyCode == 65) //a
      player.pressA = false;
    else if (event.keyCode == 68) //d
      player.pressD = false;
  }





请尝试以下代码来解决您的问题:







Try the below code to solve your problem:


<!DOCTYPE html>
<canvas id="ctx" height="800" width="1500" style="border:1px solid #000000;"></canvas>
<script>
 
 var ctx = document.getElementById("ctx").getContext("2d");
 
  var player = {
    x: 750,
    y: 400,
    pressW: false,
    pressS: false,
    pressA: false,
    pressD: false,
  };
 
  ctx.fillStyle = "blue";
  ctx.rect(player.x, player.y, 50,50);
 
  document.onkeydown = function(event){
    if (event.keyCode == 87) //w
      player.pressW = true;
    else if (event.keyCode == 83) //s
      player.pressS = true;
    else if (event.keyCode == 65) //a
      player.pressA = true;
    else if (event.keyCode == 68) //d
      player.pressD = true;
  }
 
  document.onkeyup = function(event){
    if (event.keyCode == 87) //w
      player.pressW = false;
    else if (event.keyCode == 83) //s
      player.pressS = false;
    else if (event.keyCode == 65) //a
      player.pressA = false;
    else if (event.keyCode == 68) //d
      player.pressD = false;
  }
 
  function updatePlayerPosition(){
    if (player.pressW == true)
      player.y -= 10;
    if (player.pressS == true)
      player.y += 10;
    if (player.pressA == true)
      player.x -= 10;
    if (player.pressD == true)
      player.x += 10;
  }
 
  function drawPlayer(){
    ctx.fillStyle = "blue";
    ctx.fillRect(player.x, player.y, 50,50);
  }
 
  function Update(){
    ctx.clearRect(0,0,1500,800)
    updatePlayerPosition();
    drawPlayer();
  }
 
setInterval(Update, 100);
 
</script>
<style>
 
  canvas {
  padding-left: 0;
  padding-right: 0;
  margin-left: auto;
  margin-right: auto;
  display: block;
}
 
</style>





谢谢,



Thanks,


这篇关于我想创建一个移动的角色,我的代码不起作用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆