嗨,我以前玩过 Box2D,刚刚开始使用 QuickBox2D,这让事情变得更容易。然而,我对特定多边形形状的行为与对盒子的行为不同。所有其他属性都相同。我在下面包含了 3 个简单的示例及其来源。
我真正想要工作的是示例 1,其中两个对象都是多边形。如您所见,似乎“桨”多边形是失败的那个——“球”(无论是多边形还是圆形)只是直接穿过它,而不是像盒子“桨”对象那样反弹. 将不胜感激一些帮助或见解。
由于现阶段我只能发布一行,因此可以在此处查看 3 个示例的 swf 预览
示例 1 来源:
package {
import com.actionsnippet.qbox.QuickBox2D;
import com.actionsnippet.qbox.QuickObject;
import flash.display.MovieClip;
public class Eg1 extends MovieClip {
private var sim:QuickBox2D;
private var paddle:QuickObject;
private var ball:QuickObject;
public function Eg1() {
this.sim = new QuickBox2D(this);
this.paddle = this.sim.addPoly({
x:13,
y:19,
angle:0,
density:0,
draggable:false,
isBullet:true,
verts:[[-3.84,-0.67,-2.84,-1,-2.17,-0.33,2.17,-0.33,2.84,-1,3.84,-0.67,2.84,1,-2.51,1]]
});
this.ball = this.sim.addPoly({
x:13,
y:1,
restitution:1,
friction:1,
draggable:false,
isBullet:true,
verts:[[-0.34,-1,0.34,-1,0.67,-0.33,0.67,0.33,0.34,1,-0.34,1,-0.67,0.33,-0.67,-0.33]]
});
this.sim.start();
}
}}
示例 2 来源:
package {
import com.actionsnippet.qbox.QuickBox2D;
import com.actionsnippet.qbox.QuickObject;
import flash.display.MovieClip;
public class Eg2 extends MovieClip {
private var sim:QuickBox2D;
private var paddle:QuickObject;
private var ball:QuickObject;
public function Eg2() {
this.sim = new QuickBox2D(this);
this.paddle = this.sim.addBox({
x:13,
y:19,
angle:0,
density:0,
draggable:false,
isBullet:true,
width:8
});
this.ball = this.sim.addPoly({
x:13,
y:1,
restitution:1,
friction:1,
draggable:false,
isBullet:true,
verts:[[-0.34,-1,0.34,-1,0.67,-0.33,0.67,0.33,0.34,1,-0.34,1,-0.67,0.33,-0.67,-0.33]]
});
this.sim.start();
}
}}
示例 3 来源:
package {
import com.actionsnippet.qbox.QuickBox2D;
import com.actionsnippet.qbox.QuickObject;
import flash.display.MovieClip;
public class Eg3 extends MovieClip {
private var sim:QuickBox2D;
private var paddle:QuickObject;
private var ball:QuickObject;
public function Eg3() {
this.sim = new QuickBox2D(this);
this.paddle = this.sim.addPoly({
x:13,
y:19,
angle:0,
density:0,
draggable:false,
isBullet:true,
verts:[[-3.84,-0.67,-2.84,-1,-2.17,-0.33,2.17,-0.33,2.84,-1,3.84,-0.67,2.84,1,-2.51,1]]
});
this.ball = this.sim.addCircle({
x:13,
y:1,
restitution:1,
friction:1,
draggable:false,
isBullet:true,
radius:1
});
this.sim.start();
}
}}