我正在编码重力但它口吃
I am coding gravity but its stuttering
我正在制作一个 2d 平台游戏,并且正在研究重力和碰撞,但是当我真正让碰撞起作用时,我的重力变得非常不稳定,有没有办法解决这个问题?这是代码:
gravity(){
if(this.y <= 400 - this.scale){
let gc = get(this.x, this.y + 20);
print(gc);
if(gc[0] == 0 && gc[1] == 0 && gc[2] == 255 && gc[3] == 255){
return;
}
else{
this.y += 2;
}
}
}
编辑:我听说这应该有效,所以我将提供更多代码以查看是否有帮助。这是运行一切的函数:
var groundArray = [];
groundArray[0] = [0];
groundArray[1] = [0];
groundArray[2] = [0];
groundArray[3] = [0];
groundArray[4] = [0];
groundArray[5] = [0];
groundArray[6] = [0];
groundArray[7] = [0];
groundArray[8] = [1];
groundArray[9] = [1, 1];
function setup() {
noStroke();
createCanvas(400, 400);
for(let y = 0; y < groundArray.length; y++){
for(let x = 0; x < groundArray[y].length; x++){
if(groundArray[y][x] != 0){
groundArray[y][x] = new ground(x * 40, y * 40);
}
}
}
}
var play = new player(35, 0, 20);
function draw() {
background(255);
for(let y = 0; y < groundArray.length; y++){
for(let x = 0; x < groundArray[y].length; x++){
if(groundArray[y][x] != 0){
groundArray[y][x].draw();
}
}
}
play.draw();
play.gravity();
}
通常每帧都会调用一个名为 draw()
的函数,这是这里发生的情况吗?看起来像。在这种情况下,您真的希望每一帧都调用 new ground(x * 40, y * 40)
吗,这个对象创建放在 setup()
中不是更好吗?
我怀疑这是不必要的,并且可能每帧都进行昂贵的初始化工作,但如果没有看到完整的源代码,就不能确定。
我正在制作一个 2d 平台游戏,并且正在研究重力和碰撞,但是当我真正让碰撞起作用时,我的重力变得非常不稳定,有没有办法解决这个问题?这是代码:
gravity(){
if(this.y <= 400 - this.scale){
let gc = get(this.x, this.y + 20);
print(gc);
if(gc[0] == 0 && gc[1] == 0 && gc[2] == 255 && gc[3] == 255){
return;
}
else{
this.y += 2;
}
}
}
编辑:我听说这应该有效,所以我将提供更多代码以查看是否有帮助。这是运行一切的函数:
var groundArray = [];
groundArray[0] = [0];
groundArray[1] = [0];
groundArray[2] = [0];
groundArray[3] = [0];
groundArray[4] = [0];
groundArray[5] = [0];
groundArray[6] = [0];
groundArray[7] = [0];
groundArray[8] = [1];
groundArray[9] = [1, 1];
function setup() {
noStroke();
createCanvas(400, 400);
for(let y = 0; y < groundArray.length; y++){
for(let x = 0; x < groundArray[y].length; x++){
if(groundArray[y][x] != 0){
groundArray[y][x] = new ground(x * 40, y * 40);
}
}
}
}
var play = new player(35, 0, 20);
function draw() {
background(255);
for(let y = 0; y < groundArray.length; y++){
for(let x = 0; x < groundArray[y].length; x++){
if(groundArray[y][x] != 0){
groundArray[y][x].draw();
}
}
}
play.draw();
play.gravity();
}
通常每帧都会调用一个名为 draw()
的函数,这是这里发生的情况吗?看起来像。在这种情况下,您真的希望每一帧都调用 new ground(x * 40, y * 40)
吗,这个对象创建放在 setup()
中不是更好吗?
我怀疑这是不必要的,并且可能每帧都进行昂贵的初始化工作,但如果没有看到完整的源代码,就不能确定。