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); }
public RigidBody 剛体を作成する(CollisionShape 剛体の形, Matrix 剛体のワールド行列, 剛体物性 剛体の物性, 物理演算を超越した特性 物理演算を超越した特性) { return(_剛体ファクトリ.剛体を作成して返す(剛体の形, 剛体のワールド行列, 剛体の物性, 物理演算を超越した特性)); }