我在box2d世界中有一系列物體。這些機構被鏈接在一起。我想在按下鼠標時沿着身體創建一個正弦波。我只希望這個波發生一次,它應該以相同的幅度沿着身體的長度繼續,直到它結束,然後停止,直到再次按下鼠標。使用Processing和box2d創建單波
目前,我有這樣的:
float angle = 0.0;
float scalar = 1.2;
float speed = 0.01;
void mousePressed() {
for (int j = 0; j < 91; j++) {
float x = sin(j+angle)*scalar;
float y = 0;
Vec2 mov2 = new Vec2(x,y);
bridge.particles.get(j).body.setLinearVelocity(mov2);
angle+=speed;
}
}
然而,這將導致機構成爲一個連續波剛剛向外擴展如下(只是在一瞬間嘗試這種對左側股):
如何創建一個向下移動的單波形?
使用從@dfour修改後的代碼,我用:
void mousePressed() {
int frequency = 10; // sine frequency (larger for longer wave)
double fullCircle = Math.toRadians(180); // get 1 full iteration of a circle in radians;
float x=0;
float y=0;
for(int i = 0; i < 100 ; i++){
if(i > fullCircle*frequency){
// after first wave so output 0
//System.out.println(0);
}else{
// part of first sinewave so output wave value
x =(float)Math.sin(i/frequency);
Vec2 mov2 = new Vec2(x,y);
print(" x: "+x);
System.out.println(Math.sin(i/frequency));
bridge.particles.get(i).body.setLinearVelocity(mov2);
}
}
}
只是要清楚:[Processing!= Java](https://meta.stackoverflow.com/questions/321127/processing-java) – Pshemo
當然這就是爲什麼兩個標籤都在。但問題可能也是一個java一個 –
如果你想自己控制身體,是否有你使用box2d的原因?如果你知道你想要的身體是什麼,爲什麼不把它們繪製在那裏而不是依靠物理引擎? –