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