【问题标题】:Creation of Bullets using objects in a game [closed]在游戏中使用对象创建子弹[关闭]
【发布时间】:2014-10-16 01:03:41
【问题描述】:

我有一些处理代码,我需要在按下某个键时创建一个新的矩形框,并且我需要在屏幕上显示多个。我已经设置了所有代码,因此当我按下某个键时可能会发生某些事情,但我试图无限地创建新对象,但我无法让它工作。

代码:

public float translateX = 0;
public float translateY = 260;
public float translateZ = 10000;

float bulletX, bulletY, bulletZ;

public int rotationBlue = 1;
public int rotationGreen = 1;
public int rotationRed = 1;

public boolean shootBool = false;
public boolean shootBoolVal = true;

void setup() {
  size(1280, 720, P3D);
  frameRate(60);
}

void draw() {
  background(0);
  translate(640, 360, -10000);
  fill(0);
  box(100000);
  ship();
  control();
}

void control() {
  if (keyPressed) {
    if (key == 'a' || key == 'A') {
      translateX = translateX - 5;
    }

    if (key == 'd' || key == 'D') {
      translateX = translateX + 5;
    }

    if ((key == 's' || key == 'S')) {
      translateZ = translateZ + 5;
    }

    if ((key == 'w' || key == 'W')) {
      translateZ = translateZ - 5;
    }

    if ((key == 'q' || key == 'Q')) {
      translateY = translateY - 5;
    }

    if ((key == 'e' || key == 'E')) {
      translateY = translateY + 5;
    }

    if (key == 'f' || key == 'F') {

    }
  }
}

public void ship() {
  fill(0, 0, 255);
  stroke(255);
  strokeWeight(3);
  translate(translateX, translateY, translateZ);
  //translate(mouseX, mouseY, 0);

  rotateX(radians(rotationBlue));
  rotateY(radians(rotationBlue));
  rotateZ(radians(rotationBlue));
  rotationBlue++;
  box(100);

  fill(0, 255, 0);
  rotateX(radians(rotationGreen));
  rotateY(radians(rotationGreen));
  rotateZ(radians(rotationGreen));
  rotationGreen--;
  box(100);

  fill(255, 0, 0);
  rotateX(radians(rotationRed));
  rotateY(radians(rotationRed));
  rotateZ(radians(rotationRed));
  rotationRed = rotationRed + 2;
  box(100);

  //translateZ = translateZ - 5;
}

这是我到目前为止的所有代码。我需要能够拥有它,以便当我按下“F”键(已在功能控件中定义)时,会在船舶坐标处创建一个新框,该框自身的 Z 方向不断减小。请记住,我必须能够同时拥有多个这些盒子。

我希望有人告诉我必须采取哪些步骤才能做到这一点。

【问题讨论】:

  • 您具体有什么问题;请问你有什么问题?

标签: java opengl processing


【解决方案1】:

这些是获得您需要的东西所需的步骤:

  • 定义一个自定义的Bullet 对象,包含位置、速度和其他必需的属性,也可能是一个绘图函数
  • 声明这些Bullet 对象的集合
  • 当您想射击子弹时,只需将其添加到集合中
  • draw() 方法中迭代集合中的所有项目符号
  • 要更新所有子弹的属性,请定义一个 update() 方法,该方法更新每个子弹的速度、位置等,也由 draw() 函数调用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多