Ejemplo n.º 1
0
    public override void update(GameObject obj)
    {
        phyObj  po = obj.GetComponent <phyObj>();
        Vector3 v  = unityFire.getItemVelocity(obj);

        unityFire.addItemForce(obj, B * po.getq() * v.magnitude, calu.normalVector(this.direction, v).normalized);
    }
    protected override void realUpdate(GameObject obj)
    {
        Vector3 pos2 = obj.transform.position;
        Vector3 dir  = pos2 - unityFire.getItemPos(thisObj);
        double  r2   = dir.sqrMagnitude;
        phyObj  po   = obj.GetComponent <phyObj>();
        double  F    = (k * thisPo.getq() * po.getq()) / r2;

        unityFire.addItemForce(obj, (float)F, dir.normalized);
    }
Ejemplo n.º 3
0
    public static GameObject creatObject(Vector3 v, float m = 1, float q = 0, float e = 1, float size = 0)
    {
        GameObject obj = unityFire.addItem("Sphere", v);

        unityFire.setItemScale(obj, size, size, size);
        phyObj po = obj.GetComponent <phyObj>();

        po.setm(m);
        po.setq(q);
        if (e > 1 || e < 0)
        {
            //碰撞系数在0-1之间,应判断一下
        }
        po.sete(e);
        return(obj);
    }
Ejemplo n.º 4
0
    private void OnCollisionEnter(Collision collision)//只针对了对心碰撞?
    {
        GameObject gameobj1 = this.gameObject;
        phyObj     phyobj1  = GetComponent <phyObj>();
        GameObject gameobj2 = collision.gameObject;
        phyObj     phyobj2  = GetComponent <phyObj>();
        float      m1       = phyobj1.getm();
        Vector3    v1       = unityFire.getItemVelocity(gameobj1);
        float      m2       = phyobj2.getm();
        Vector3    v2       = unityFire.getItemVelocity(gameobj2);
        float      e        = phyobj1.gete() > phyobj2.gete() ? phyobj1.gete() : phyobj2.gete();
        Vector3    newv1    = (m1 * v1 + m2 * v2 - e * m2 * (v1 - v2)) / (m1 + m2);
        Vector3    newv2    = (m1 * v1 + m2 * v2 - e * m1 * (v2 - v1)) / (m1 + m2);

        unityFire.setItemVelocity(gameobj1, 1, newv1);
        unityFire.setItemVelocity(gameobj2, 1, newv2);
    }
Ejemplo n.º 5
0
    public override void update(GameObject obj)
    {
        phyObj po = obj.GetComponent <phyObj>();

        unityFire.addItemForce(obj, po.getm() * this.a, this.direction);
    }