Javascript 旋转角色时,它会旋转一定数量,然后返回

Javascript 旋转角色时,它会旋转一定数量,然后返回,javascript,canvas,rotation,Javascript,Canvas,Rotation,我刚开始做一个简单的游戏,你的孩子需要食物,否则你会死。很简单,这只是一件有趣的事情 我正在尝试一种不同于我通常使用的方法,角色旋转然后移动 当角色旋转时,它移动一定量,然后在另一个方向上旋转一定量。然后它重复。我如何使它只旋转一个方向,而不是交替,并且在整个过程中都是沿着同一个方向 旋转脚本: self.rotationy = 0; self.rotationx = 0; self.turnLeft = function() { self.rotationy -= 0.1; }; se

我刚开始做一个简单的游戏,你的孩子需要食物,否则你会死。很简单,这只是一件有趣的事情

我正在尝试一种不同于我通常使用的方法,角色旋转然后移动

当角色旋转时,它移动一定量,然后在另一个方向上旋转一定量。然后它重复。我如何使它只旋转一个方向,而不是交替,并且在整个过程中都是沿着同一个方向

旋转脚本:

self.rotationy = 0;
self.rotationx = 0;
self.turnLeft = function() {
    self.rotationy -= 0.1;
};
self.turnRight = function() {
    self.rotationy += 0.1;
};
self.move = function() {
    var posX = Math.sin(self.rotationy);
    var posZ = Math.cos(self.rotationy);
    self.locationx += posX + 3;
    self.locationy += posZ + 3;
};
self.update = function() {
    self.hunger -= 0.003;
    self.updateColour();
    if (self.hunger <= 0) {
        self.die();
    } else if (self.hunger >= 1) {
        self.die();
    }
    if (self.locationx <= 20) {
        self.locationx = canvas.width - 21;
    } else if (self.locationx >= canvas.width - 20) {
        self.locationx = 21;
    } else if (self.locationy <= 20) {
        self.locationy = canvas.height - 21;
    } else if (self.locationy >= canvas.height) {
        self.locationy = 21;
    }
    drawCircle(ctx, self.locationx, self.locationy, 20, self.colour);
};
self.die = function() {

};
    setInterval(self.update, 50);
};
如果这很重要,以下是更新脚本:

self.rotationy = 0;
self.rotationx = 0;
self.turnLeft = function() {
    self.rotationy -= 0.1;
};
self.turnRight = function() {
    self.rotationy += 0.1;
};
self.move = function() {
    var posX = Math.sin(self.rotationy);
    var posZ = Math.cos(self.rotationy);
    self.locationx += posX + 3;
    self.locationy += posZ + 3;
};
self.update = function() {
    self.hunger -= 0.003;
    self.updateColour();
    if (self.hunger <= 0) {
        self.die();
    } else if (self.hunger >= 1) {
        self.die();
    }
    if (self.locationx <= 20) {
        self.locationx = canvas.width - 21;
    } else if (self.locationx >= canvas.width - 20) {
        self.locationx = 21;
    } else if (self.locationy <= 20) {
        self.locationy = canvas.height - 21;
    } else if (self.locationy >= canvas.height) {
        self.locationy = 21;
    }
    drawCircle(ctx, self.locationx, self.locationy, 20, self.colour);
};
self.die = function() {

};
    setInterval(self.update, 50);
};
下面是一个JSFIDLE:

还要注意,我还没有创建一个函数来清除所采用的路径


提前谢谢

多亏了Siguza,我把答案贴在这里了,以防有人遇到类似的问题

我加了+3,这使得角色朝着积极的方向发展。这本应该是为了让他跑得更快,而这也是他建议的

self.locationx += posX + 3;
self.locationy += posZ + 3;
更改:

self.locationx += posX * 3;
self.locationy += posZ * 3;

不能重现你的交替问题,但相同的总方向是因为你有+3,它总是沿着X和Y的正方向。谢谢成功了。但它现在走得很慢,我该如何加速呢?你可以试试*作为一个开始…我以前试过,但没有成功。不过,我以前可能有不同的想法。再次感谢XD。我现在想把它作为一个简单的印刷错误来结束,因为这对我来说似乎不仅仅是微不足道的。。。但话说回来,我是个数学爱好者,这个问题可能会帮助一些人。。。