コード例 #1
0
    public void AddRelativeForce(LVector2 relativeForce, LVector2 localPosition, LForceMode2D forceMode)
    {
        LVector3 globalForce    = transform.rotation * (LVector3)relativeForce;
        LVector2 globalPosition = transform.TransformPoint(localPosition);

        AddForceAtPosition(globalForce, globalPosition, forceMode);
    }
コード例 #2
0
    public void AddTorque(LFloat torque, LForceMode2D forceMode)
    {
        switch (forceMode)
        {
        case LForceMode2D.Force:
        {
            mUserTorque += torque;
            break;
        }

        case LForceMode2D.Impulse:
        {
            mAngularVelocity += torque * inertiaInverse;
            break;
        }
        }
    }
コード例 #3
0
    public void AddForce(LVector2 force, LForceMode2D forceMode)
    {
        switch (forceMode)
        {
        case LForceMode2D.Force:
        {
            mUserForce += force;
            break;
        }

        case LForceMode2D.Impulse:
        {
            mLinearVelocity += force * mMassInverse;
            break;
        }
        }
    }
コード例 #4
0
    public void AddForceAtPosition(LVector2 force, LVector2 position, LForceMode2D forceMode)
    {
        AddForce(force, forceMode);
        switch (forceMode)
        {
        case LForceMode2D.Force:
        {
            mUserTorque += LVector3.Cross(position - GetWorldCenterOfMass(), force).z;
            break;
        }

        case LForceMode2D.Impulse:
        {
            mAngularVelocity += LVector3.Cross(position - GetWorldCenterOfMass(), force).z *mInertiaInverse;
            break;
        }
        }
    }