public RigidBody 剛体を作成して返す(CollisionShape 剛体の形, Matrix 剛体のワールド変換行列, 剛体物性 剛体の物性, 物理演算を超越した特性 物理演算を超越した特性)
        {
            var mass = (物理演算を超越した特性.物理演算の影響を受けないKinematic剛体である) ? 0 : 剛体の物性.質量;

            _collisionShapes.Add(剛体の形);

            var localInertia = new BulletSharp.Math.Vector3(0, 0, 0);

            if (mass != 0)
            {
                剛体の形.CalculateLocalInertia(mass, out localInertia);
            }

            var motionState = new DefaultMotionState(剛体のワールド変換行列.ToBulletSharp());
            var rbInfo      = new RigidBodyConstructionInfo(mass, motionState, 剛体の形, localInertia);

            var body = new RigidBody(rbInfo)
            {
                Restitution = 剛体の物性.反発係数,
                Friction    = 剛体の物性.摩擦係数,
            };

            body.SetDamping(剛体の物性.移動減衰係数, 剛体の物性.回転減衰係数);

            float linearDamp  = body.LinearDamping;
            float angularDamp = body.AngularDamping;

            if (物理演算を超越した特性.物理演算の影響を受けないKinematic剛体である)
            {
                body.CollisionFlags = body.CollisionFlags | CollisionFlags.KinematicObject;
            }

            body.ActivationState = ActivationState.DisableDeactivation;

            _dynamicsWorld.AddRigidBody(body, 物理演算を超越した特性.自身の衝突グループ番号, 物理演算を超越した特性.自身と衝突する他の衝突グループ番号);

            return(body);
        }
Exemplo n.º 2
0
 public RigidBody 剛体を作成する(CollisionShape 剛体の形, Matrix 剛体のワールド行列, 剛体物性 剛体の物性, 物理演算を超越した特性 物理演算を超越した特性)
 {
     return(_剛体ファクトリ.剛体を作成して返す(剛体の形, 剛体のワールド行列, 剛体の物性, 物理演算を超越した特性));
 }