本文整理汇总了C#中JigLibX.Physics.Body.MoveTo方法的典型用法代码示例。如果您正苦于以下问题:C# Body.MoveTo方法的具体用法?C# Body.MoveTo怎么用?C# Body.MoveTo使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类JigLibX.Physics.Body
的用法示例。
在下文中一共展示了Body.MoveTo方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TriangleMeshActor
public TriangleMeshActor(Game game, Vector3 position, float scale,
Texture2D heightMap,
float[,] heightData)
: base(game)
{
this.position = position;
this.scale = new Vector3(1,1,1);
_body = new Body();
_body.MoveTo(position, Matrix.Identity);
Array2D field = new Array2D(heightData.GetUpperBound(0), heightData.GetUpperBound(1));
int upperZ = heightData.GetUpperBound(1);
for (int x = 0; x < heightData.GetUpperBound(0); x++)
{
for (int z = 0; z < upperZ; z++)
{
field.SetAt(x, z, heightData[x, upperZ - 1 - z]);
}
}
_skin = new CollisionSkin(null);
float X = heightMap.Width / 2 * scale;
float Z = heightMap.Height / 2 * scale;
_skin.AddPrimitive(new Heightmap(field, X, -Z, scale, scale), new MaterialProperties(0.7f, 0.7f, 0.6f));
_skin.ExternalData = this;
PhysicsSystem.CurrentPhysicsSystem.CollisionSystem.AddCollisionSkin(_skin);
}
示例2: BowlingPin
public BowlingPin(Game game, Model model, Matrix orientation, Vector3 position)
: base(game, model)
{
body = new Body();
collision = new CollisionSkin(body);
// add a capsule for the main corpus
Primitive capsule = new Capsule(Vector3.Zero, Matrix.Identity, 0.1f, 1.3f);
// add a small box at the buttom
Primitive box = new Box(new Vector3(-0.1f,-0.1f,-0.1f), Matrix.Identity, Vector3.One * 0.2f);
// add a sphere in the middle
Primitive sphere = new Sphere(new Vector3(0.0f, 0.0f, 0.3f), 0.3f);
collision.AddPrimitive(capsule, new MaterialProperties(0.1f, 0.5f, 0.5f));
collision.AddPrimitive(box, new MaterialProperties(0.1f, 0.5f, 0.5f));
collision.AddPrimitive(sphere, new MaterialProperties(0.1f, 0.5f, 0.5f));
body.CollisionSkin = this.collision;
Vector3 com = SetMass(0.5f);
body.MoveTo(position, orientation);
collision.ApplyLocalTransform(new Transform(-com, Matrix.Identity));
body.EnableBody();
this.scale = Vector3.One * 10.0f;
}
示例3: HeightmapObject
public HeightmapObject(Game game, Model model,Vector2 shift)
: base(game, model)
{
body = new Body(); // just a dummy. The PhysicObject uses its position to get the draw pos
collision = new CollisionSkin(null);
HeightMapInfo heightMapInfo = model.Tag as HeightMapInfo;
Array2D field = new Array2D(heightMapInfo.heights.GetUpperBound(0), heightMapInfo.heights.GetUpperBound(1));
for (int x = 0; x < heightMapInfo.heights.GetUpperBound(0); x++)
{
for (int z = 0; z < heightMapInfo.heights.GetUpperBound(1); z++)
{
field.SetAt(x,z,heightMapInfo.heights[x,z]);
}
}
// move the body. The body (because its not connected to the collision
// skin) is just a dummy. But the base class shoudl know where to
// draw the model.
body.MoveTo(new Vector3(shift.X,0,shift.Y), Matrix.Identity);
collision.AddPrimitive(new Heightmap(field, shift.X, shift.Y, 1, 1), new MaterialProperties(0.7f,0.7f,0.6f));
PhysicsSystem.CurrentPhysicsSystem.CollisionSystem.AddCollisionSkin(collision);
}
示例4: Initialise
public override void Initialise()
{
base.Initialise();
// Create new bodey and collision skin
m_Body = new Body();
m_Skin = new CollisionSkin(m_Body);
if (m_Body != null)
{
// Set skin to the body
m_Body.CollisionSkin = m_Skin;
// Check the skin was successfully created and add this
// custom dice as a primitive to the collision skin
if (m_Skin != null)
{
Box box = new Box(Vector3.Zero, Matrix.Identity, transform.Scale);
m_Skin.AddPrimitive(box, (int)MaterialTable.MaterialID.BouncyNormal);
// Set mass
m_Mass = SetMass(1.0f);
// Move the body to correct position initially
m_Body.MoveTo(transform.Position, Matrix.Identity);
// Apply transform to skin
m_Skin.ApplyLocalTransform(new JigLibX.Math.Transform(-m_Mass, Matrix.Identity));
// Enable body
EnableBody();
}
}
}
示例5: Setup
void Setup(HeightMapInfo heightMapInfo, Vector2 shift)
{
// A dummy. The physics object uses its position to get draw pos
Body = new Body();
CollisionSkin = new CollisionSkin(null);
info = heightMapInfo;
Array2D field = new Array2D(heightMapInfo.Heights.GetUpperBound(0), heightMapInfo.Heights.GetUpperBound(1));
for (int x = 0; x < heightMapInfo.Heights.GetUpperBound(0); ++x)
{
for (int z = 0; z < heightMapInfo.Heights.GetUpperBound(1); ++z)
{
field.SetAt(x, z, heightMapInfo.Heights[x, z]);
}
}
// Move dummy body. The body isn't connected to the collision skin.
// But the base class should know where to draw the model.
Body.MoveTo(new Vector3(shift.X, 0, shift.Y), Matrix.Identity);
CollisionSkin.AddPrimitive(new Heightmap(field, shift.X, shift.Y, 1, 1), new MaterialProperties(0.7f, 0.7f, 0.6f));
PhysicsSystem.CurrentPhysicsSystem.CollisionSystem.AddCollisionSkin(CollisionSkin);
}
示例6: HeightmapObject
public HeightmapObject(Model model,Vector2 shift, Vector3 position)
: base()
{
Body = new Body(); // just a dummy. The PhysicObject uses its position to get the draw pos
Skin = new CollisionSkin(null);
HeightMapInfo heightMapInfo = model.Tag as HeightMapInfo;
Array2D field = new Array2D(heightMapInfo.heights.GetLength(0), heightMapInfo.heights.GetLength(1));
for (int x = 0; x < heightMapInfo.heights.GetLength(0); x++)
{
for (int z = 0; z < heightMapInfo.heights.GetLength(1); z++)
{
field.SetAt(x,z,heightMapInfo.heights[x,z]);
}
}
// move the body. The body (because its not connected to the collision
// skin) is just a dummy. But the base class shoudl know where to
// draw the model.
Body.MoveTo(new Vector3(shift.X,0,shift.Y), Matrix.Identity);
Skin.AddPrimitive(new Heightmap(field, shift.X, shift.Y, heightMapInfo.terrainScale, heightMapInfo.terrainScale), new MaterialProperties(0.7f, 0.7f, 0.6f));
PhysicsSystem.CurrentPhysicsSystem.CollisionSystem.AddCollisionSkin(Skin);
CommonInit(position, new Vector3(1,1,1), model, false, 0);
}
示例7: HeightMapModel
// TODO: Need to add png parameter
public HeightMapModel(Game game, Model m, Boolean t, Vector3 pos, float scale)
: base(game, m, t, pos, scale, true)
{
Body = new Body(); // just a dummy. The PhysicObject uses its position to get the draw pos
Skin = new CollisionSkin(null);
HeightMapInfo heightMapInfo = this.model.Tag as HeightMapInfo;
Array2D field = new Array2D(heightMapInfo.heights.GetUpperBound(0), heightMapInfo.heights.GetUpperBound(1));
for (int x = 0; x < heightMapInfo.heights.GetUpperBound(0); x++)
{
for (int z = 0; z < heightMapInfo.heights.GetUpperBound(1); z++)
{
field.SetAt(x, z, heightMapInfo.heights[x, z]);
}
}
// move the body. The body (because its not connected to the collision
// skin) is just a dummy. But the base class shoudl know where to
// draw the model.
Body.MoveTo(this.Position, Matrix.Identity);
Skin.AddPrimitive(new Heightmap(field, 0f, 0f, 1, 1), new MaterialProperties(0.7f, 0.7f, 0.6f));
PhysicsSystem.CurrentPhysicsSystem.CollisionSystem.AddCollisionSkin(this.Skin);
}
示例8: HeightMapModel2
public HeightMapModel2(Game game, HeightMap info, Boolean t, Vector3 pos, float scale)
: base(game , null, t, pos, scale)
{
// Game game, Model m, Boolean t, Vector3 pos, float scale, Boolean solid
//Game game, HeightMap m, Boolean t, Vector3 pos, float scale
this.Visible = false;
Body = new Body();
Skin = new CollisionSkin(null);
//Skin.CollisionType = (int)CollisionTypes.Terrain;
Array2D field = new Array2D(info.heights.GetUpperBound(0), info.heights.GetUpperBound(1));
for (int x = 0; x < info.heights.GetUpperBound(0); x++)
{
for (int z = 0; z < info.heights.GetUpperBound(1); z++)
{
field.SetAt(x, z, info.heights[x, z]);
}
}
Body.MoveTo(new Vector3(info.heightmapPosition.X, info.heightmapPosition.Y, info.heightmapPosition.Y), Matrix.Identity);
Skin.AddPrimitive(new Heightmap(field, info.heightmapPosition.X, info.heightmapPosition.Y, scale, scale), (int)MaterialTable.MaterialID.NotBouncyRough);
Body.Immovable = true;
PhysicsSystem.CurrentPhysicsSystem.CollisionSystem.AddCollisionSkin(Skin);
}
示例9: Missile
public Missile(ParentGame game, Model modelObj, Texture2D[] modelTextures, DrawingClass drawClass, GameplayScreen Screen)
: base(game, modelObj, modelTextures)
{
this.drawClass = drawClass;
this.Screen = Screen;
_body = new Body();
_skin = new CollisionSkin(_body);
_body.CollisionSkin = _skin;
Box box = new Box(Vector3.Zero, Matrix.Identity, new Vector3(1f,1f,4f));
_skin.AddPrimitive(box, new MaterialProperties(0.8f, 0.8f, 0.7f));
Vector3 com = SetMass(2.0f);
_body.MoveTo(position, Matrix.Identity);
_skin.ApplyLocalTransform(new Transform(-com, Matrix.Identity));
_body.EnableBody();
Body.ExternalData = this;
Vector3 pos = position;
Vector3 forwardVec = Body.Orientation.Forward;
forwardVec.Normalize();
pos -= forwardVec * 10;
// Use the particle emitter helper to output our trail particles.
trailEmitter = new ParticleEmitter(drawClass.projectileTrailParticles,
trailParticlesPerSecond, position);
rgob = new RagdollObject(parentGame, null, null, null, RagdollObject.RagdollType.Simple, 1.0f, 3);
rgob.Position = position;
//rgob.PutToSleep();
//rgob.limbs[0].PhysicsBody.AngularVelocity = (new Vector3(1, 1, 0) * 2000);
RagdollTransforms = new List<Matrix>();
RagdollTransforms = rgob.GetWorldMatrix();
foreach (JigLibX.Objects.PhysicObject lim in rgob.limbs)
DisableCollisions(lim.PhysicsBody, Body);
foreach (JigLibX.Objects.PhysicObject lim in rgob.limbs)
foreach (BuildingPiece pic in Screen.PieceList)
DisableCollisions(lim.PhysicsBody, pic.Body);
foreach (JigLibX.Objects.PhysicObject lim in rgob.limbs)
foreach (Building bld in Screen.Buildings)
DisableCollisions(lim.PhysicsBody, bld.Body);
foreach (JigLibX.Objects.PhysicObject lim in rgob.limbs)
DisableCollisions(lim.PhysicsBody, Screen.terrainActor.Body);
foreach (JigLibX.Objects.PhysicObject limb0 in rgob.limbs)
foreach (Missile mis in Screen.BulletList)
foreach (JigLibX.Objects.PhysicObject limb1 in mis.rgob.limbs)
DisableCollisions(limb1.PhysicsBody, limb0.PhysicsBody);
}
示例10: SphereObject
public SphereObject(Game game, Model model,float radius, Matrix orientation, Vector3 position)
: base(game, model)
{
body = new Body();
collision = new CollisionSkin(body);
collision.AddPrimitive(new Sphere(Vector3.Zero * 5.0f,radius), new MaterialProperties(0.5f,0.7f,0.6f));
body.CollisionSkin = this.collision;
Vector3 com = SetMass(10.0f);
body.MoveTo(position + com, orientation);
// collision.ApplyLocalTransform(new Transform(-com, Matrix.Identity));
body.EnableBody();
this.scale = Vector3.One * radius;
}
示例11: BoxObject
public BoxObject(Game game,Model model,Vector3 sideLengths, Matrix orientation, Vector3 position)
: base(game,model)
{
body = new Body();
collision = new CollisionSkin(body);
collision.AddPrimitive(new Box(- 0.5f * sideLengths, orientation, sideLengths), new MaterialProperties(0.8f, 0.8f, 0.7f));
body.CollisionSkin = this.collision;
Vector3 com = SetMass(1.0f);
body.MoveTo(position, Matrix.Identity);
collision.ApplyLocalTransform(new Transform(-com, Matrix.Identity));
body.EnableBody();
this.scale = sideLengths;
}
示例12: CapsuleObject
public CapsuleObject(Game game, Model model,float radius,float length, Matrix orientation, Vector3 position)
: base(game, model)
{
body = new Body();
collision = new CollisionSkin(body);
collision.AddPrimitive(new Capsule(Vector3.Transform(new Vector3(-0.5f,0,0), orientation),orientation,radius,length),(int)MaterialTable.MaterialID.BouncyNormal);
body.CollisionSkin = this.collision;
Vector3 com = SetMass(10.0f);
body.MoveTo(position + com, Matrix.Identity);
collision.ApplyLocalTransform(new Transform(-com,Matrix.Identity));
body.EnableBody();
this.scale = new Vector3(radius, radius, length / 2);
}
示例13: CylinderObject
public CylinderObject(Game game, float radius, float length, Vector3 position, Model model)
: base(game, model)
{
body = new Body();
collision = new CollisionSkin(body);
if (length - 2.0f * radius < 0.0f)
throw new ArgumentException("Radius must be at least half length");
Capsule middle = new Capsule(Vector3.Zero, Matrix.Identity, radius, length - 2.0f * radius);
float sideLength = 2.0f * radius / (float) Math.Sqrt(2.0d);
Vector3 sides = new Vector3(-0.5f * sideLength, -0.5f * sideLength, -radius);
Box supply0 = new Box(sides, Matrix.Identity,
new Vector3(sideLength, sideLength, length));
Box supply1 = new Box(Vector3.Transform(sides,Matrix.CreateRotationZ(MathHelper.PiOver4)),
Matrix.CreateRotationZ(MathHelper.PiOver4), new Vector3(sideLength, sideLength, length));
collision.AddPrimitive(middle, new MaterialProperties(0.8f, 0.8f, 0.7f));
collision.AddPrimitive(supply0, new MaterialProperties(0.8f, 0.8f, 0.7f));
collision.AddPrimitive(supply1, new MaterialProperties(0.8f, 0.8f, 0.7f));
body.CollisionSkin = this.collision;
Vector3 com = SetMass(1.0f);
collision.ApplyLocalTransform(new Transform(-com, Matrix.Identity));
#region Manually set body inertia
float cylinderMass = body.Mass;
float comOffs = (length - 2.0f * radius) * 0.5f; ;
float Ixx = 0.5f * cylinderMass * radius * radius + cylinderMass * comOffs * comOffs;
float Iyy = 0.25f * cylinderMass * radius * radius + (1.0f / 12.0f) * cylinderMass * length * length + cylinderMass * comOffs * comOffs;
float Izz = Iyy;
body.SetBodyInertia(Ixx, Iyy, Izz);
#endregion
body.MoveTo(position, Matrix.CreateRotationX(MathHelper.PiOver2));
body.EnableBody();
this.scale = new Vector3(radius, radius, length * 0.5f);
}
示例14: BuildingPiece
public BuildingPiece(ParentGame game, Model modelObj, Texture2D[] modelTextures,
DrawingClass drawClass, GameplayScreen Screen, float Length, float Width, float Height)
: base(game, modelObj, modelTextures)
{
// Use the particle emitter helper to output our trail particles.
trailEmitter = new ParticleEmitter(drawClass.smokePlumeParticles,
3, position);
fireEmitter = new ParticleEmitter(drawClass.fireParticles,
30, position);
this.Screen = Screen;
this.drawClass = drawClass;
_body = new Body();
_skin = new CollisionSkin(_body);
_body.CollisionSkin = _skin;
//Box box = new Box(Vector3.Zero, Matrix.Identity, new Vector3(10f, 7f, 7f));
Box box = new Box(Vector3.Zero, Matrix.Identity, new Vector3(Length, Width, Height));
if (Length > Width && Length > Height)
boundSphere.Radius = Length;
else if (Width > Length && Width > Height)
boundSphere.Radius = Width;
else
boundSphere.Radius = Height;
_skin.AddPrimitive(box, new MaterialProperties(0.8f, 0.8f, 0.7f));
Vector3 com = SetMass(3.0f);
_body.MoveTo(position, Matrix.Identity);
_skin.ApplyLocalTransform(new Transform(-com, Matrix.Identity));
_body.EnableBody();
Body.ExternalData = this;
SetBody(rotation);
Body.AllowFreezing = true;
Body.SetDeactivationTime(1);
foreach (BuildingPiece pic in Screen.PieceList)
DisableCollisions(this.Body, pic.Body);
foreach (Building bld in Screen.Buildings)
DisableCollisions(this.Body, bld.Body);
}
示例15: BoxActor
public BoxActor(Game game, Vector3 position, Vector3 scale)
: base(game)
{
this.position = position;
this.scale = scale;
_body = new Body();
_skin = new CollisionSkin(_body);
_body.CollisionSkin = _skin;
Box box = new Box(Vector3.Zero, Matrix.Identity, scale);
_skin.AddPrimitive(box, new MaterialProperties(0.8f, 0.8f, 0.7f));
Vector3 com = SetMass(1.0f);
_body.MoveTo(position, Matrix.Identity);
_skin.ApplyLocalTransform(new JigLibX.Math.Transform(-com, Matrix.Identity));
_body.EnableBody();
}