0

嗨,我以前玩过 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();
    }

}}
4

1 回答 1

0

是的。我用一组凸形物体创建了相同的“形状”,效果很好。

于 2010-12-23T06:08:50.793 回答