Processing 使用PVectors处理过程中的跳跃真实感

Processing 使用PVectors处理过程中的跳跃真实感,processing,Processing,我试图让跳跃看起来逼真,同时我通过视频观看: 编码的本质——编码列车 我进入了PVectors。我强烈建议你看着他。但是为了回答我的问题,除了它按照我想要的方式绘制我的PVector的矩形外,所有的事情似乎都是可行的 这就是代码,我希望它能跳转,但什么也没发生。您可以看到,矩形get再次绘制在同一点上,但没有移动。这肯定是背景图或其他问题,但我不知道具体是什么。你问题的性质尚不清楚。您提到了在按下向上箭头键后背景干扰矩形的问题。这可能是因为background0在h.display之后立即调用。

我试图让跳跃看起来逼真,同时我通过视频观看:

编码的本质——编码列车

我进入了PVectors。我强烈建议你看着他。但是为了回答我的问题,除了它按照我想要的方式绘制我的PVector的矩形外,所有的事情似乎都是可行的


这就是代码,我希望它能跳转,但什么也没发生。您可以看到,矩形get再次绘制在同一点上,但没有移动。这肯定是背景图或其他问题,但我不知道具体是什么。

你问题的性质尚不清楚。您提到了在按下向上箭头键后背景干扰矩形的问题。这可能是因为background0在h.display之后立即调用。如果是显示问题,我会从你的循环中删除background0

除此之外,循环本身似乎还有其他问题。按下向上键时,h仅在16帧内受加速度影响。为了使你的物体更真实,重力或你选择的任何加速度都应该持续作用在物体上

考虑到这一点,这里有一个解决方案

按void键{ 如果keyCode==UP{ //按下向上箭头时,使字符向上“跳跃”。 //设置速度应该是按键时唯一发生的事情。 速度0.0,-2; } } 抽真空{ //重置每个帧的背景,使矩形不重叠。 背景255; //始终在重置画布后绘制矩形。 h、 展示; //通过对象的速度更改对象的位置。 位置、速度; //通过物体的加速度来确定物体的速度。 //因为在这种情况下加速度是重力的作用力,所以加速度不需要改变。 速度、加速度; //防止矩形从画布底部掉落。 i位置y>高度-5位置y=高度-5; } //您忽略了在代码段中定义变量。给你。 PVector位置=新的PVector 0,0; PVector速度=新PVector 0,0; PVector加速度=新PVector 0,0.1;//请注意,加速度的y值为0.01。这样你就能看到重力的影响。 //定义矩形对象。 对象h=新对象; 类对象{ 对象{}//构造函数。 空白显示{ //在位置向量的x和y位置绘制矩形。 //“+width/2”将其置于屏幕中央。 直肠中心; 矩形位置.x+宽度/2,位置.y,10,10; } }
void keyPressed() {
  if (keyCode == UP) {
    for (int i = 0; i < 16; i++) {
      location.sub(velocity);
      velocity.sub(acceleration);
      h.display();
      background(0);
    }
    velocity.set(0, 15);
  }
}