在 JavaScript 中的左/右箭头上添加弯曲路径
Add curved path on left / right arrow in JavaScript
if(game.pressedKeys[37]) {
this.ship.x -= this.shipSpeed * dt;
}
if(game.pressedKeys[39]) {
this.ship.x += this.shipSpeed * dt;
}
此代码运行良好。但我想要,滚动路径是弯曲的。像这样的一种:
我的解决方案应该是什么?我该如何解决这个问题?谢谢
你总是知道你的船的 x 位置。创建一个采用 x
位置和 returns 一个 y
.
的函数
您的曲线可以用抛物线函数 y=a(x-s)^2+b
表示,其中 a
是垂直拉伸,s
是横向移动,b
是垂直移动。
这里我创建了这样一个函数,它适用于屏幕宽度为 500,而飞船最大为 150
function parabolic(x) {
return Math.pow((((1/20.412415)*x)-12.24745),2)+150;
}
//I am using ugly numbers, however you can have a variable `w` for the screen width
这是一个工作演示:JSFiddle(单击 canvas 键盘工作)
document.addEventListener('keydown', function(e) {
if(e.which===37) {
ship.x--;
} else if(e.which===39) {
ship.x++;
}
ship.y = parabolic(ship.x);
update();
})
if(game.pressedKeys[37]) {
this.ship.x -= this.shipSpeed * dt;
}
if(game.pressedKeys[39]) {
this.ship.x += this.shipSpeed * dt;
}
此代码运行良好。但我想要,滚动路径是弯曲的。像这样的一种:
我的解决方案应该是什么?我该如何解决这个问题?谢谢
你总是知道你的船的 x 位置。创建一个采用 x
位置和 returns 一个 y
.
您的曲线可以用抛物线函数 y=a(x-s)^2+b
表示,其中 a
是垂直拉伸,s
是横向移动,b
是垂直移动。
这里我创建了这样一个函数,它适用于屏幕宽度为 500,而飞船最大为 150
function parabolic(x) {
return Math.pow((((1/20.412415)*x)-12.24745),2)+150;
}
//I am using ugly numbers, however you can have a variable `w` for the screen width
这是一个工作演示:JSFiddle(单击 canvas 键盘工作)
document.addEventListener('keydown', function(e) {
if(e.which===37) {
ship.x--;
} else if(e.which===39) {
ship.x++;
}
ship.y = parabolic(ship.x);
update();
})