gpt4 book ai didi

javascript - 无法在 Javascript 中调用函数

转载 作者:行者123 更新时间:2023-11-30 05:34:44 26 4
gpt4 key购买 nike

您好,我正在尝试使用 Box2dWeb,并使用自上而下的汽车游戏。

当我试图控制汽车时,我的问题出现了,所以它会移动,起初只是向前。为简单起见,我不想使用轮子,而只是将力施加到汽车(一个盒子)上。

我为控件创建了一个函数,但由于某种原因它没有被调用...这就是我需要指针或建议的地方。 (对象的创建和放置工作得很好)

部分代码如下:

var GlobalVar={   }
var KEY = {
UP: 87,//W
DOWN: 83,//s
LEFT: 65,//A
RIGHT: 68//D
}
GlobalVar.pressedKeys = [];//an array to remember which key is pressed or not

$(function(){
$(document).keydown(function(e){
GlobalVar.pressedKeys[e.keyCode] = true;
});
$(document).keyup(function(e){
GlobalVar.pressedKeys[e.keyCode] = false;
});

Rendering();
PlaceStuff(GlobalVar.currentLevel);//placing stuff, like car and boundaries/walls
moveCar();

});
function moveCar(){
if (GlobalVar.pressedKeys[KEY.UP]){
var force = new b2Vec2(0, -10000000);
GlobalVar.car.ApplyForce(force, GlobalVar.car.GetWorldCenter());
}
}

最佳答案

moveCar 函数似乎没有被多次调用。

您应该执行以下操作:

function moveCar(){

if (GlobalVar.pressedKeys[KEY.UP]){
var force = new b2Vec2(0, -10000000);
GlobalVar.car.ApplyForce(force, GlobalVar.car.GetWorldCenter());
}


requestAnimationFrame(moveCar);

}

您可能还想添加一个修改器来修改根据帧速率添加的力的大小:

then = Date.now();

function moveCar(){

var now = Date.now();
var modifier = now - then; // Make modifier the time in milliseconds it took since moveCar was last executed.

then = now;

if (GlobalVar.pressedKeys[KEY.UP]){
var force = new b2Vec2(0, -10000000);
GlobalVar.car.ApplyForce(force * modifier, GlobalVar.car.GetWorldCenter());
}

requestAnimationFrame(moveCar);

}

这将确保汽车不会在较慢的系统上移动得更慢。


如果您还希望多次执行 Rendering() 函数,您可能还想创建另一个函数,尽可能频繁地调用它并调用其他两个函数。

then = Date.now();

function moveCar(modifier){
if (GlobalVar.pressedKeys[KEY.UP]){
var force = new b2Vec2(0, -10000000);
GlobalVar.car.ApplyForce(force * modifier, GlobalVar.car.GetWorldCenter());
}
}

function update() {
var now = Date.now();
var modifier = now - then; // Make modifier the time in milliseconds it took since moveCar was last executed.

then = now;

moveCar(modifier);
Rendering();

requestAnimationFrame(update);
}

关于javascript - 无法在 Javascript 中调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24626448/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com