本文整理汇总了C#中FarseerPhysics.Dynamics.Body.ApplyAngularImpulse方法的典型用法代码示例。如果您正苦于以下问题:C# Body.ApplyAngularImpulse方法的具体用法?C# Body.ApplyAngularImpulse怎么用?C# Body.ApplyAngularImpulse使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FarseerPhysics.Dynamics.Body
的用法示例。
在下文中一共展示了Body.ApplyAngularImpulse方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: LoadContent
public override void LoadContent()
{
base.LoadContent();
World.Gravity = new Vector2(0f, 10f);
HasCursor = false;
EnableCameraControl = true;
HasVirtualStick = true;
_hzFront = 8.5f;
_hzBack = 5.0f;
_zeta = 0.85f;
_maxSpeed = 50.0f;
#if WINDOWS_PHONE
_scale = 2f / 3f;
#else
_scale = 1f;
#endif
// terrain
_ground = new Body(World);
{
Vertices terrain = new Vertices();
terrain.Add(new Vector2(-20f, -5f));
terrain.Add(new Vector2(-20f, 0f));
terrain.Add(new Vector2(20f, 0f));
terrain.Add(new Vector2(25f, -0.25f));
terrain.Add(new Vector2(30f, -1f));
terrain.Add(new Vector2(35f, -4f));
terrain.Add(new Vector2(40f, 0f));
terrain.Add(new Vector2(45f, 0f));
terrain.Add(new Vector2(50f, 1f));
terrain.Add(new Vector2(55f, 2f));
terrain.Add(new Vector2(60f, 2f));
terrain.Add(new Vector2(65f, 1.25f));
terrain.Add(new Vector2(70f, 0f));
terrain.Add(new Vector2(75f, -0.3f));
terrain.Add(new Vector2(80f, -1.5f));
terrain.Add(new Vector2(85f, -3.5f));
terrain.Add(new Vector2(90f, 0f));
terrain.Add(new Vector2(95f, 0.5f));
terrain.Add(new Vector2(100f, 1f));
terrain.Add(new Vector2(105f, 2f));
terrain.Add(new Vector2(110f, 2.5f));
terrain.Add(new Vector2(115f, 1.3f));
terrain.Add(new Vector2(120f, 0f));
terrain.Add(new Vector2(160f, 0f));
terrain.Add(new Vector2(159f, 10f));
terrain.Add(new Vector2(201f, 10f));
terrain.Add(new Vector2(200f, 0f));
terrain.Add(new Vector2(240f, 0f));
terrain.Add(new Vector2(250f, -5f));
terrain.Add(new Vector2(250f, 10f));
terrain.Add(new Vector2(270f, 10f));
terrain.Add(new Vector2(270f, 0));
terrain.Add(new Vector2(310f, 0));
terrain.Add(new Vector2(310f, -5));
for (int i = 0; i < terrain.Count - 1; ++i)
{
FixtureFactory.AttachEdge(terrain[i], terrain[i + 1], _ground);
}
_ground.Friction = 0.6f;
}
// teeter board
{
_board = new Body(World);
_board.BodyType = BodyType.Dynamic;
_board.Position = new Vector2(140.0f, -1.0f);
PolygonShape box = new PolygonShape(1f);
box.SetAsBox(10.0f, 0.25f);
_teeter =
new Sprite(ScreenManager.Assets.TextureFromShape(box, MaterialType.Pavement, Color.LightGray, 1.2f));
_board.CreateFixture(box);
RevoluteJoint teeterAxis = JointFactory.CreateRevoluteJoint(_ground, _board, Vector2.Zero);
teeterAxis.LowerLimit = -8.0f * Settings.Pi / 180.0f;
teeterAxis.UpperLimit = 8.0f * Settings.Pi / 180.0f;
teeterAxis.LimitEnabled = true;
World.AddJoint(teeterAxis);
_board.ApplyAngularImpulse(-100.0f);
}
// bridge
{
_bridgeSegments = new List<Body>();
const int segmentCount = 20;
PolygonShape shape = new PolygonShape(1f);
shape.SetAsBox(1.0f, 0.125f);
_bridge =
new Sprite(ScreenManager.Assets.TextureFromShape(shape, MaterialType.Dots, Color.SandyBrown, 1f));
//.........这里部分代码省略.........
示例2: LoadContent
public override void LoadContent()
{
base.LoadContent();
World.Gravity = new Vector2( 0f, 10f );
HasCursor = false;
EnableCameraControl = true;
HasVirtualStick = true;
_hzFront = 9.5f;
_hzBack = 6.0f;
_zeta = 1f;
_maxSpeed = 150.0f;
#if WINDOWS_PHONE
_scale = 2f / 3f;
#else
_scale = 1f;
#endif
_mapScale = 2;
_groundTex = ContentHelper.GetTexture( "tutorial" );
var terrain = GetVertsFromMapImage( _groundTex, _mapScale, out _groundOrigin );
// terrain
_ground = BodyFactory.CreateCompoundPolygon( World, terrain, 1f, BodyType.Static );
_ground.Friction = 1f;
// teeter board
{
_board = new Body( World );
_board.BodyType = BodyType.Dynamic;
_board.Position = new Vector2( 140.0f, -1.0f );
var box = new PolygonShape( 1f );
box.SetAsBox( 10.0f, 0.25f );
_teeter =
new PrimitiveSprite( ScreenManager.Assets.TextureFromShape( box, MaterialType.Pavement, Color.LightGray, 1.2f ) );
_board.CreateFixture( box );
RevoluteJoint teeterAxis = JointFactory.CreateRevoluteJoint( _ground, _board, Vector2.Zero );
teeterAxis.LowerLimit = -8.0f * Settings.Pi / 180.0f;
teeterAxis.UpperLimit = 8.0f * Settings.Pi / 180.0f;
teeterAxis.LimitEnabled = true;
World.AddJoint( teeterAxis );
_board.ApplyAngularImpulse( -100.0f );
}
// bridge
{
_bridgeSegments = new List<Body>();
const int segmentCount = 20;
var shape = new PolygonShape( 1f );
shape.SetAsBox( 1.0f, 0.125f );
_bridge =
new PrimitiveSprite( ScreenManager.Assets.TextureFromShape( shape, MaterialType.Dots, Color.SandyBrown, 1f ) );
Body prevBody = _ground;
for ( int i = 0; i < segmentCount; ++i ) {
var body = new Body( World );
body.BodyType = BodyType.Dynamic;
body.Position = new Vector2( 161f + 2f * i, 0.125f );
Fixture fix = body.CreateFixture( shape );
fix.Friction = 0.6f;
JointFactory.CreateRevoluteJoint( World, prevBody, body, -Vector2.UnitX );
prevBody = body;
_bridgeSegments.Add( body );
}
JointFactory.CreateRevoluteJoint( World, _ground, prevBody, Vector2.UnitX );
}
// boxes
{
_boxes = new List<Body>();
var box = new PolygonShape( 1f );
box.SetAsBox( 0.5f, 0.5f );
_box =
new PrimitiveSprite( ScreenManager.Assets.TextureFromShape( box, MaterialType.Squares, Color.SaddleBrown, 2f ) );
var body = new Body( World );
body.BodyType = BodyType.Dynamic;
body.Position = new Vector2( 220f, -0.5f );
body.CreateFixture( box );
_boxes.Add( body );
body = new Body( World );
body.BodyType = BodyType.Dynamic;
body.Position = new Vector2( 220f, -1.5f );
body.CreateFixture( box );
_boxes.Add( body );
body = new Body( World );
body.BodyType = BodyType.Dynamic;
body.Position = new Vector2( 220f, -2.5f );
//.........这里部分代码省略.........
示例3: CarTest
private CarTest()
{
_hz = 4.0f;
_zeta = 0.7f;
_speed = 50.0f;
Body ground = new Body(World);
{
EdgeShape shape = new EdgeShape(new Vector2(-20.0f, 0.0f), new Vector2(20.0f, 0.0f));
ground.CreateFixture(shape);
float[] hs = new[] { 0.25f, 1.0f, 4.0f, 0.0f, 0.0f, -1.0f, -2.0f, -2.0f, -1.25f, 0.0f };
float x = 20.0f, y1 = 0.0f;
const float dx = 5.0f;
for (int i = 0; i < 10; ++i)
{
float y2 = hs[i];
FixtureFactory.AttachEdge(new Vector2(x, y1), new Vector2(x + dx, y2), ground);
y1 = y2;
x += dx;
}
for (int i = 0; i < 10; ++i)
{
float y2 = hs[i];
FixtureFactory.AttachEdge(new Vector2(x, y1), new Vector2(x + dx, y2), ground);
y1 = y2;
x += dx;
}
FixtureFactory.AttachEdge(new Vector2(x, 0.0f), new Vector2(x + 40.0f, 0.0f), ground);
x += 80.0f;
FixtureFactory.AttachEdge(new Vector2(x, 0.0f), new Vector2(x + 40.0f, 0.0f), ground);
x += 40.0f;
FixtureFactory.AttachEdge(new Vector2(x, 0.0f), new Vector2(x + 10.0f, 5.0f), ground);
x += 20.0f;
FixtureFactory.AttachEdge(new Vector2(x, 0.0f), new Vector2(x + 40.0f, 0.0f), ground);
x += 40.0f;
FixtureFactory.AttachEdge(new Vector2(x, 0.0f), new Vector2(x, 20.0f), ground);
ground.Friction = 0.6f;
}
// Teeter
{
Body body = new Body(World);
body.BodyType = BodyType.Dynamic;
body.Position = new Vector2(140.0f, 1.0f);
PolygonShape box = new PolygonShape(1);
box.SetAsBox(10.0f, 0.25f);
body.CreateFixture(box);
RevoluteJoint jd = JointFactory.CreateRevoluteJoint(ground, body, Vector2.Zero);
jd.LowerLimit = -8.0f * Settings.Pi / 180.0f;
jd.UpperLimit = 8.0f * Settings.Pi / 180.0f;
jd.LimitEnabled = true;
World.AddJoint(jd);
body.ApplyAngularImpulse(100.0f);
}
//Bridge
{
const int N = 20;
PolygonShape shape = new PolygonShape(1);
shape.SetAsBox(1.0f, 0.125f);
Body prevBody = ground;
for (int i = 0; i < N; ++i)
{
Body body = new Body(World);
body.BodyType = BodyType.Dynamic;
body.Position = new Vector2(161.0f + 2.0f * i, -0.125f);
Fixture fix = body.CreateFixture(shape);
fix.Friction = 0.6f;
Vector2 anchor = new Vector2(-1, 0);
JointFactory.CreateRevoluteJoint(World, prevBody, body, anchor);
prevBody = body;
}
Vector2 anchor2 = new Vector2(1.0f, 0);
JointFactory.CreateRevoluteJoint(World, ground, prevBody, anchor2);
}
// Boxes
{
PolygonShape box = new PolygonShape(0.5f);
box.SetAsBox(0.5f, 0.5f);
Body body = new Body(World);
body.BodyType = BodyType.Dynamic;
//.........这里部分代码省略.........
示例4: LoadContent
public override void LoadContent()
{
base.LoadContent();
World.Gravity = new Vector2(0f, 10f);
HasCursor = false;
EnableCameraControl = true;
_hzFront = 8.5f;
_hzBack = 5.0f;
_zeta = 0.85f;
_maxSpeed = 50.0f;
// terrain
_ground = new Body(World);
{
Vertices terrain = new Vertices();
terrain.Add(new Vector2(-20f, -5f));
terrain.Add(new Vector2(-20f, 0f));
terrain.Add(new Vector2(20f, 0f));
terrain.Add(new Vector2(25f, -0.25f));
terrain.Add(new Vector2(30f, -1f));
terrain.Add(new Vector2(35f, -4f));
terrain.Add(new Vector2(40f, 0f));
terrain.Add(new Vector2(45f, 0f));
terrain.Add(new Vector2(50f, 1f));
terrain.Add(new Vector2(55f, 2f));
terrain.Add(new Vector2(60f, 2f));
terrain.Add(new Vector2(65f, 1.25f));
terrain.Add(new Vector2(70f, 0f));
terrain.Add(new Vector2(75f, -0.3f));
terrain.Add(new Vector2(80f, -1.5f));
terrain.Add(new Vector2(85f, -3.5f));
terrain.Add(new Vector2(90f, 0f));
terrain.Add(new Vector2(95f, 0.5f));
terrain.Add(new Vector2(100f, 1f));
terrain.Add(new Vector2(105f, 2f));
terrain.Add(new Vector2(110f, 2.5f));
terrain.Add(new Vector2(115f, 1.3f));
terrain.Add(new Vector2(120f, 0f));
terrain.Add(new Vector2(160f, 0f));
terrain.Add(new Vector2(159f, 10f));
terrain.Add(new Vector2(201f, 10f));
terrain.Add(new Vector2(200f, 0f));
terrain.Add(new Vector2(240f, 0f));
terrain.Add(new Vector2(250f, -5f));
terrain.Add(new Vector2(250f, 10f));
terrain.Add(new Vector2(270f, 10f));
terrain.Add(new Vector2(270f, 0));
terrain.Add(new Vector2(310f, 0));
terrain.Add(new Vector2(310f, -5));
for (int i = 0; i < terrain.Count - 1; ++i)
{
FixtureFactory.AttachEdge(terrain[i], terrain[i + 1], _ground);
}
_ground.Friction = 0.6f;
}
// teeter board
{
_board = new Body(World);
_board.BodyType = BodyType.Dynamic;
_board.Position = new Vector2(140.0f, -1.0f);
PolygonShape box = new PolygonShape(1f);
box.Vertices = PolygonTools.CreateRectangle(10.0f, 0.25f);
_teeter = new Sprite(ContentWrapper.TextureFromShape(box, "Stripe", ContentWrapper.Gold, ContentWrapper.Black, ContentWrapper.Black, 1f));
_board.CreateFixture(box);
RevoluteJoint teeterAxis = JointFactory.CreateRevoluteJoint(World, _ground, _board, Vector2.Zero);
teeterAxis.LowerLimit = -8.0f * Settings.Pi / 180.0f;
teeterAxis.UpperLimit = 8.0f * Settings.Pi / 180.0f;
teeterAxis.LimitEnabled = true;
_board.ApplyAngularImpulse(-100.0f);
}
// bridge
{
_bridgeSegments = new List<Body>();
const int segmentCount = 20;
PolygonShape shape = new PolygonShape(1f);
shape.Vertices = PolygonTools.CreateRectangle(1.0f, 0.125f);
_bridge = new Sprite(ContentWrapper.TextureFromShape(shape, ContentWrapper.Gold, ContentWrapper.Black));
Body prevBody = _ground;
for (int i = 0; i < segmentCount; ++i)
{
Body body = new Body(World);
body.BodyType = BodyType.Dynamic;
body.Position = new Vector2(161f + 2f * i, 0.125f);
Fixture fix = body.CreateFixture(shape);
fix.Friction = 0.6f;
JointFactory.CreateRevoluteJoint(World, prevBody, body, -Vector2.UnitX);
//.........这里部分代码省略.........