我正在为我的学校制作一个基于关卡的游戏制作平台游戏。
当用户按住右箭头键时,角色开始逐渐向右移动,并加速直到达到最大速度。它一直以最大速度行进,直到箭头键被释放。当它被释放时,角色逐渐减速并停止。
我可以让它加速,但是当钥匙被释放时,角色会向前跳并立即停止,而不是减速然后停止。
这是我的代码:
var maxSpeed = 10;
var xForce = 0;
var CharaXPos = 10;
var CharaYPos = 200;
var draw = function() {
background(255, 0, 0);
image(getImage("creatures/Winston"), CharaXPos, CharaYPos, 50, 50);
if (keyIsPressed && keyCode === RIGHT) {
CharaXPos = CharaXPos + xForce;
xForce = xForce + 0.25;
if (xForce >= maxSpeed && keyIsPressed) {
xForce = maxSpeed;
}
}
if (!keyIsPressed) {
while (xForce > 0) {
CharaXPos = CharaXPos + xForce;
xForce = xForce - xForce*0.25;
}}
};
答案 0 :(得分:1)
将while
循环更改为if
语句,以便每次调用draw()
时力减少一点,而不是在一次调用中一直减少到0 draw()
。
另外,请注意xForce = xForce - xForce*0.25
,因为这样会使xForce
越来越接近0而不会到达那里。试试xForce = xForce - 0.25
(加速代码的反面)。