javascript - 让游戏角色走路,Javascript

标签 javascript html game-development

我正在尝试制作一个带有行走 Angular 色的简单游戏。当按下一个按钮时,我想在两个图像之间连续切换(当按钮被按住时),这将使它看起来像 Angular 色在移动。它确实移动了,但是图片之间的切换只在开始时发生一次。谁能告诉我我做错了什么?或者建议一种方法。坚持了几个小时。

任何帮助将不胜感激。

<!DOCTYPE html>
<html>
<head>
    <link href="./styles/style.css" rel="stylesheet" type="text/css"><link>
    <meta charset="utf-8" />
    <title>Playa Haters</title>
    <style>
    	* { padding: 0; margin: 0; }
    </style>
</head>
<body>

<canvas id="myCanvas" width="800" height="450"></canvas>
<img id="step1" src="media/step1.jpg" width="120" height="150">
<img id="step2" src="media/step2.jpg" width="120" height="150">

<script>
    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");  //get content 

    var step1 = document.getElementById("step1");
    var step2 = document.getElementById("step2");
    var currentStep =  step1;

    document.addEventListener("keydown", keyDownHandler, false);
    document.addEventListener("keyup", keyUpHandler, false);
    
    var rightPressed = false;
    var leftPressed = false;
    var step = 5;
    var distance = null;

    function keyDownHandler(e) {
        if(e.keyCode == 39){
            rightPressed = true;
        }
        else if(e.keyCode = 37){
            leftPressed = true;
        }
    }

    function keyUpHandler(e) {
    if(e.keyCode == 39) {
        rightPressed = false;
    }
    else if(e.keyCode == 37) {
        leftPressed = false;
        }
    }

    //initial position
    var x = canvas.width/2;
    var y = canvas.height/2 - 100;

    function drawShooter(){
        ctx.drawImage(currentStep, x, y);
    }

    function walk(){
        if (currentStep = step1){
            currentStep = step2;
        }
        else if (currentStep = step2){
            currentStep = step1;
        }
    }

    function draw(){
        ctx.clearRect(0, 0, canvas.width, canvas.height); 
        drawShooter();
        if(rightPressed) {
        x += step;
        setInterval(walk, 500);
        } 
        else if(leftPressed) {
        x -= step;
        setInterval(walk, 500);
        } 
    }

    setInterval(draw, 20);

</script>

</body>
</html>

最佳答案

在您的 walk 函数中,您正在分配而不是在 if 语句中进行比较...您有:

function walk(){
    if (currentStep = step1){
        currentStep = step2;
    }
    else if (currentStep = step2){
        currentStep = step1;
    }
}

你应该改为:

function walk(){
    if (currentStep === step1){
        currentStep = step2;
    }
    else if (currentStep === step2){
        currentStep = step1;
    }
}

注意条件语句中的三重等号。这应该可以解决交换图像的问题。

关于javascript - 让游戏角色走路,Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52623275/

相关文章:

html - 使用 xpath 和 R,如何只提取字符串不一致的文本字符串的一部分?

html - 如何替换此布局中的 flex?

html - PrimeFaces selectOneMenu 无法内嵌到纯文本中(导致换行)

java - 我无法让蛇的 body 部位沿着头部的路径移动

java - 安卓游戏,播放 "Game Over"音效

javascript - 之前未使用 DTM 设置 Cookie 时获取 Adob​​e Marketing Cloud ID?

javascript - 去匿名化 jQuery 中的匿名函数

javascript - 如何使按钮多次更改段落并在最后一次更改段落和按钮文本?

javascript - 避免固定 header 的 anchor 标记

javascript - 将 jQuery 事件处理程序绑定(bind)到多个相似的表单