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

Processing按键控制移动物体及发射小方块问题咨询

代码修改实现方案

核心问题说明

现有代码的两个核心问题:

  • updown变量无触发逻辑,始终为false,方块移动代码根本不会执行,导致看起来移动卡顿/速度极慢
  • 上下边界判断误用width变量,逻辑上应该匹配垂直方向的画布高度height

功能实现代码

完整修改后代码如下,已实现按键控制方块上下移动、空格发射小方块的效果:

boolean moveUp = false;
boolean moveDown = false;
int squareX = 20;
int squareY = 20;
// 调整speed数值即可控制移动速度,数值越大速度越快
int speed = 5;
int circleX = 150;
// 存储所有发射的小方块
ArrayList<PVector> smallSquares = new ArrayList<PVector>();
int smallSquareSpeed = 8;

void setup () {
  size (700,700);
  // 调整帧率也可以控制整体速度,默认60帧
  frameRate(60);
}

void draw () {
  background (0);

  // 原有移动的大圆逻辑保留
  fill(100);
  ellipse (circleX,140,150,150);
  circleX -=2;
  if (circleX < - 20) {
    circleX = 550;
  }

  // 大方块移动逻辑
  fill (225);
  rect (squareX, squareY, 70, 70);
  if (moveUp) {
    squareY -= speed;
  }
  if (moveDown) {
    squareY += speed;
  }
  // 边界限制,不让方块移出画布
  if (squareY < 0) {
    squareY = 0;
  }
  if (squareY + 70 > height) {
    squareY = height -70;
  }

  // 小方块发射逻辑
  fill(255,0,0);
  for(int i = smallSquares.size()-1; i >=0; i--){
    PVector s = smallSquares.get(i);
    s.x += smallSquareSpeed;
    rect(s.x, s.y, 20,20);
    // 超出画布就移除小方块,避免内存占用过高
    if(s.x > width){
      smallSquares.remove(i);
    }
  }
}

// 按键按下触发
void keyPressed(){
  if(keyCode == UP || key == 'w' || key == 'W'){
    moveUp = true;
  }
  if(keyCode == DOWN || key == 's' || key == 'S'){
    moveDown = true;
  }
  // 按空格发射小方块,从大方块右侧中间位置发射
  if(key == ' '){
    smallSquares.add(new PVector(squareX +70, squareY + 25));
  }
}

// 按键松开停止移动
void keyReleased(){
  if(keyCode == UP || key == 'w' || key == 'W'){
    moveUp = false;
  }
  if(keyCode == DOWN || key == 's' || key == 'S'){
    moveDown = false;
  }
}

参数调整说明

  • 修改speed的数值可以调整大方块上下移动的速度,数值越大速度越快
  • 修改smallSquareSpeed的数值可以调整发射的小方块的飞行速度
  • 修改frameRate的参数可以调整全局的画面刷新速率,降低数值会整体减慢所有元素的移动速度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:27:00