You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Processo中设置随机y值后敌方车辆无法重置的技术求助

问题解决:Processo中敌方车辆重置失败的问题

问题核心

开发类Crossy Road游戏时,敌方车辆用固定值重置时正常,但用random()设置随机y坐标后,车辆无法重置,持续向下移动。

错误原因

代码中判断车辆是否需要重置的条件是baddie1 == 400,但:

  • random()生成的是浮点型数值(比如-234.7)
  • 每次车辆y坐标增加5,很难刚好等于400这个整数,导致重置条件永远无法触发,车辆会一直向下移动

修复方案

把判断条件从等于屏幕高度改成大于屏幕高度,只要车辆完全移出屏幕下方就触发重置,不管当前y坐标是整数还是浮点数。

修复后的Processo代码

size (300, 400);

double baddie1 = -100;
double baddie2 = -300;
double baddie3 = -600;

void player() {
    noStroke();
    fill(rgb(0, 255, 0));
    rect(mouseX-50, 320, 80, 80);
}

void enemy1() {
    fill(rgb(255, 0, 0));
    rect(10, baddie1, 80, 80);
}

void enemy2() {
    rect(110, baddie2, 80, 80);
}

void enemy3() {
    rect(210, baddie3, 80, 80);
}

void draw() {
    background(rgb(226, 225, 225));
    // 改为判断是否超过屏幕高度
    if(baddie1 > 400) {
        baddie1 = random(-600, -100);
    } else {
        baddie1 += 5;
    }
    if(baddie2 > 400) {
        baddie2 = random(-600, -100);
    } else {
        baddie2 += 5;
    }
    if(baddie3 > 400) {
        baddie3 = random(-600, -100);
    } else {
        baddie3 += 5;
    }
    player();
    enemy1();
    enemy2();
    enemy3();
}

修复后的Processing兼容版本

double baddie1 = -100;
double baddie2 = -300;
double baddie3 = -600;

void setup(){
  size (300, 400);
}

void player() {
    noStroke();
    fill(rgb(0, 255, 0));
    rect(mouseX-50, 320, 80, 80);
}

void enemy1() {
    fill(rgb(255, 0, 0));
    rect(10, baddie1, 80, 80);
}

void enemy2() {
    rect(110, baddie2, 80, 80);
}

void enemy3() {
    rect(210, baddie3, 80, 80);
}

void draw() {
    background(rgb(226, 225, 225));
    // 改为判断是否超过屏幕高度
    if(baddie1 > height) {
        baddie1 = random(-600, -100);
    } else {
        baddie1 += 5;
    }
    if(baddie2 > height) {
        baddie2 = random(-600, -100);
    } else {
        baddie2 += 5;
    }
    if(baddie3 > height) {
        baddie3 = random(-600, -100);
    } else {
        baddie3 += 5;
    }
    player();
    enemy1();
    enemy2();
    enemy3();
}

color rgb(int r, int g, int b){
  return color(r, g, b);
}

void rect(double x, double y, double w, double h){
  rect((float)x, (float)y, (float)w, (float)h);
}

额外优化建议

  • 用height代替硬编码的400,代码更灵活,修改窗口大小时无需手动调整数值
  • 如果想进一步避免车辆重置后间距过近,可以在随机生成y坐标时,确保和其他车辆的y坐标保持最小距离(比如至少150像素)

内容的提问来源于stack exchange,提问作者Anna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 03:10:16