首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript/HTML5 5-尝试制作一个简单的游戏AI

Javascript/HTML5 5-尝试制作一个简单的游戏AI
EN

Stack Overflow用户
提问于 2013-02-05 15:33:18
回答 2查看 1.3K关注 0票数 0

我的概念相当简单。用一种方式动画一个图像,然后让它回来。

代码语言:javascript
复制
var xPos = 10;

function main(){
    window.requestAnimationFrame(main);
    var canvas = document.getElementById("myCanvas");
    var c = canvas.getContext("2d");

    //Initialize images
    var img = new Image();
    img.src = "goomba.png";

    c.clearRect(0,0,500,500);
    c.drawImage(img,xPos,10);


    //increment coordinates
    if(xPos <= 250){
        xPos+=2;
    }
    else if(xPos >= 250){
        xPos-=2;
    }
}
window.requestAnimationFrame(main);

我已经知道我的代码有什么问题了。当xPos超过250时,则第二个if语句变为真。然而,一旦它低于250,第一个如果再次变为真。所以我知道问题出在哪里,只是不知道怎么解决。任何帮助都是非常感谢的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-05 15:42:50

有一个速度变量(正是右,负是左,振幅是改变每个循环的像素数):

代码语言:javascript
复制
var xVelocity = 2;

并使用它来确定要添加到xPos each循环中的内容:

代码语言:javascript
复制
xPos += xVelocity;

然后根据xVelocity和xPos设置它,这样图像就会“反弹”:

代码语言:javascript
复制
if(xVelocity > 0){
    if(xPos > 250){
        xVelocity = -2;
    }
} else {
    if(xPos < 10){
        xVelocity = 2;
    }    
}
票数 1
EN

Stack Overflow用户

发布于 2013-02-05 15:51:21

http://jsbin.com/uweyam/1/edit

这就是你想要的吗?还是你想把它停在左边的边缘?

UPD.:你也可以让它像这样反弹- http://jsbin.com/uweyam/4/edit

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14711112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档