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。我现在想把它作为一个简单的印刷错误来结束,因为这对我来说似乎不仅仅是微不足道的。。。但话说回来,我是个数学爱好者,这个问题可能会帮助一些人。。。