如何旋转rect,并且它仍然根据其旋转沿正确的方向移动
how to rotate a rect and it still move in the right direction based on its rotation
我正在用HTML5/JavaScript制作一个游戏,我希望玩家旋转,并根据其旋转向正确的方向移动。这里有一个链接,我得到了基本的旋转:HTML5画布-旋转对象而不移动坐标。这是我的一些代码:
<canvas id="canvas" width="500" height="500" style="border: 1px solid #000;"></canvas>
<script>
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var keys = [];
window.addEventListener("keydown", function(e){
keys[e.keyCode] = true;
}, false);
window.addEventListener("keyup", function(e){
delete keys[e.keyCode];
}, false);
var player = {
x: 10,
y: 10,
width: 15,
height: 15,
color: 'blue',
speed: 3,
rotate: 0,
rotateSpeed: 2
};
function game(){
update();
render();
}
function update(){
if(keys[87] || keys[38]) player.y -= player.speed;
if(keys[83] || keys[40]) player.y += player.speed;
if(keys[65] || keys[37]) player.rotate += player.rotateSpeed;
if(keys[68] || keys[39]) player.rotate -= player.rotateSpeed;
}
function render(){
ctx.clearRect(0,0,WIDTH,HEIGHT);
ctx.save();
ctx.translate(player.x+player.width/2, player.y+player.height/2);
ctx.rotate(player.rotate*Math.PI/180);
renderObject(-player.width/2, -player.height/2, player.width, player.height, player.color);
ctx.restore();
}
function renderObject(x,y,width,height,color){
ctx.fillStyle = color;
ctx.fillRect(x,y,width,height);
}
setInterval(function(){
game();
}, 25);
</script>
播放器只是在屏幕上上上下移动,但我希望它朝着它所面对的方向移动。
当你调整速度时,你需要考虑球员的角度。试试类似的东西:
function update() {
if(keys[87] || keys[38]) {
player.y -= Math.cos(player.rotate*Math.PI/180) * player.speed;
player.x -= Math.sin(player.rotate*Math.PI/180) * player.speed;
}
if(keys[83] || keys[40]) {
player.y += Math.cos(player.rotate*Math.PI/180) * player.speed;
player.x += Math.sin(player.rotate*Math.PI/180) * player.speed;
}
if(keys[65] || keys[37]) player.rotate += player.rotateSpeed;
if(keys[68] || keys[39]) player.rotate -= player.rotateSpeed;
}
cos()和sin()是三元函数,以弧度为参数。因此得出了Math.PI/180的转换因子。
希望这能奏效。我在平板电脑上,在这里无法轻松测试。。。
相关文章:
- 使用KineticJS变换(移动/缩放/旋转)形状
- 如何水平移动旋转的画布
- 如何使我的功能360度旋转并上下移动
- 猫头鹰旋转木马-自动高度移动问题
- 如何在Javascript中移动元素的旋转点
- 如何旋转rect,并且它仍然根据其旋转沿正确的方向移动
- 用户键入时旋转的内容可编辑移动
- 在 HTML5 画布中沿路径旋转移动对象
- 三.js一个物体可以同时旋转和移动吗?
- 如何锁定在类固醇中旋转的场景.js - AppGyver移动应用程序
- 想要使用 html5 的画布优化捕获的图像调整大小和旋转的代码,现在在移动设备上发出内存不足警告
- 如何在phase.js中移动时旋转汽车
- OWL旋转木马移动+/-5张幻灯片
- 我可以使用旋转功能绕时钟移动一条线吗
- Three.js-鼠标移动时沿(0,0,0)旋转对象
- 使用JavaScript和setTimeout旋转HTML元素以模拟不断移动的对象
- IE10中鼠标移动时的图像旋转
- 在HTML画布中移动旋转对象
- 在JQuery不工作的情况下旋转和移动
- 变换:旋转移动视图