Processing 在炮弹击中多米诺骨牌后添加多米诺骨牌坠落效果?

Processing 在炮弹击中多米诺骨牌后添加多米诺骨牌坠落效果?,processing,collision,projectile,Processing,Collision,Projectile,我正在尝试制作一个游戏,在这个游戏中,用户必须将一个投射物击中一系列多米诺骨牌,一旦击中,所有的多米诺骨牌都会开始掉落 例如: 也就是说,所有的多米诺骨牌键最初都是直的:| | | | | | || 一次,炮弹击中第一个多米诺骨牌,然后://// 比如说,射弹击中第六个多米诺骨牌,然后:| | | | | |/// 射弹的代码和游戏如下: 所有这些都是在处理过程中发生的 有人能帮我们做些什么吗?如何做到这一点 在这里,我给你做了一个小测试!它不是一个完全实现的物理引擎,但我想它已经足够接近了 i

我正在尝试制作一个游戏,在这个游戏中,用户必须将一个投射物击中一系列多米诺骨牌,一旦击中,所有的多米诺骨牌都会开始掉落

例如:

也就是说,所有的多米诺骨牌键最初都是直的:| | | | | | ||

一次,炮弹击中第一个多米诺骨牌,然后:////

比如说,射弹击中第六个多米诺骨牌,然后:| | | | | |///

射弹的代码和游戏如下:

所有这些都是在处理过程中发生的


有人能帮我们做些什么吗?如何做到这一点

在这里,我给你做了一个小测试!它不是一个完全实现的物理引擎,但我想它已经足够接近了

int numberOdominos = 60;
Domino [] myDominos = new Domino[numberOdominos];
int currentDropDomino = -1; 
void setup() {
  size(600, 100);
  myDominos[0] = new Domino(null);
  for (int i = 1; i < myDominos.length; i++) {
    myDominos[i] = new Domino(myDominos[i-1]);
  }
}
void draw() {
  background(0);
  String s = getDominoState();
  fill(255,0,0);
  text("press any button from 0 to " + myDominos.length + " to drop that domino and all subsequent ones!!!! (r to reset)",20,10,width,height);
  fill(255);
  text(s, 5, 40, width, 100);
}
String getDominoState() {
  String result = "";
  for (int i = 1; i < myDominos.length; i++) {
    if(currentDropDomino != -1 && i == currentDropDomino) {
      myDominos[i].push();
    }
    result += myDominos[i].state;
  }
  if(currentDropDomino != -1) currentDropDomino += 1;
  if(currentDropDomino > myDominos.length) 
      currentDropDomino = -1;

  return result;
}
class Domino {
  Domino previous;
  char state = '|';
  Domino(Domino previous) {
    this.previous = previous;
  }
  void reset() {
    state = '|';
  }
  char checkPrevious() {
    if (previous.state == '/') push();
    return state;
  }
  void push() {
    state = '/';
  }
}
void reset() {
  for(int i = 0; i < myDominos.length; i++) 
    myDominos[i].reset();
}
void keyPressed() {
  if(key == 'r' || key == 'R') {
    reset();
    return;
  }
  int pushDomino = 0;
  try {
    pushDomino = Integer.parseInt(""+key);
  } 
  catch(NumberFormatException e) {
    println("thats not a number...");
    return;
  }
  if(pushDomino < myDominos.length) currentDropDomino = pushDomino;
}
int numberOdominos=60;
Domino[]myDominos=新的Domino[numberOdominos];
int currentDropDomino=-1;
无效设置(){
尺寸(600100);
myDominos[0]=新多米诺骨牌(空);
对于(int i=1;imyDominos.length)
currentDropDomino=-1;
返回结果;
}
类多米诺骨牌{
多米诺骨牌;
字符状态=“|”;
Domino(以前的Domino){
this.previous=先前;
}
无效重置(){
状态=“|”;
}
char checkPrevious(){
if(previous.state=='/')push();
返回状态;
}
无效推送(){
状态='/';
}
}
无效重置(){
对于(int i=0;i

您只需选择一种方法来更改keyPressed()方法;类似于二维或三维中的throwprojectleat(int位置){}

之类的东西?(顺便说一句,坠落多米诺骨牌的例子是一个预渲染场景,总是在同一时间播放相同的序列)我们需要更多的信息。你是说一个完整的物理模型,第一个多米诺骨牌击中第二个,第三个,等等?或者你只是在说展示一些站立的多米诺骨牌,而另一些则倒下了?如果你在这里发布一个例子(不是你的整个程序,但足够让我们复制粘贴来了解你的目的),你也会有更多的运气。哥们!你真棒!