本文整理汇总了C#中FarseerPhysics.Dynamics.Body.createFixture方法的典型用法代码示例。如果您正苦于以下问题:C# Body.createFixture方法的具体用法?C# Body.createFixture怎么用?C# Body.createFixture使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FarseerPhysics.Dynamics.Body
的用法示例。
在下文中一共展示了Body.createFixture方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: convertPathToEdges
//Contributed by Matthew Bettcher
/// <summary>
/// Convert a path into a set of edges and attaches them to the specified body.
/// Note: use only for static edges.
/// </summary>
/// <param name="path">The path.</param>
/// <param name="body">The body.</param>
/// <param name="subdivisions">The subdivisions.</param>
public static void convertPathToEdges( Path path, Body body, int subdivisions )
{
var verts = path.getVertices( subdivisions );
if( path.isClosed )
{
var chain = new ChainShape( verts, true );
body.createFixture( chain );
}
else
{
for( int i = 1; i < verts.Count; i++ )
{
body.createFixture( new EdgeShape( verts[i], verts[i - 1] ) );
}
}
}
示例2: AttachRectangle
public static Fixture AttachRectangle( float width, float height, float density, Vector2 offset, Body body, object userData = null )
{
var rectangleVertices = PolygonTools.createRectangle( width / 2, height / 2 );
rectangleVertices.translate( ref offset );
var rectangleShape = new PolygonShape( rectangleVertices, density );
return body.createFixture( rectangleShape, userData );
}
示例3: AttachPolygon
public static Fixture AttachPolygon( Vertices vertices, float density, Body body, object userData = null )
{
if( vertices.Count <= 1 )
throw new ArgumentOutOfRangeException( nameof( vertices ), "Too few points to be a polygon" );
var polygon = new PolygonShape( vertices, density );
return body.createFixture( polygon, userData );
}
示例4: AttachCircle
public static Fixture AttachCircle( float radius, float density, Body body, object userData = null )
{
if( radius <= 0 )
throw new ArgumentOutOfRangeException( nameof( radius ), "Radius must be more than 0 meters" );
var circleShape = new CircleShape( radius, density );
return body.createFixture( circleShape, userData );
}
示例5: BreakableBody
public BreakableBody( World world, IEnumerable<Shape> shapes, Vector2 position = new Vector2(), float rotation = 0 )
{
_world = world;
_world.contactManager.onPostSolve += onPostSolve;
mainBody = new Body( _world, position, rotation, BodyType.Dynamic );
foreach( Shape part in shapes )
{
Fixture fixture = mainBody.createFixture( part );
parts.Add( fixture );
}
}
示例6: AttachEllipse
public static Fixture AttachEllipse( float xRadius, float yRadius, int edges, float density, Body body, object userData = null )
{
if( xRadius <= 0 )
throw new ArgumentOutOfRangeException( nameof( xRadius ), "X-radius must be more than 0" );
if( yRadius <= 0 )
throw new ArgumentOutOfRangeException( nameof( yRadius ), "Y-radius must be more than 0" );
var ellipseVertices = PolygonTools.createEllipse( xRadius, yRadius, edges );
var polygonShape = new PolygonShape( ellipseVertices, density );
return body.createFixture( polygonShape, userData );
}
示例7: convertPathToPolygon
/// <summary>
/// Convert a closed path into a polygon.
/// Convex decomposition is automatically performed.
/// </summary>
/// <param name="path">The path.</param>
/// <param name="body">The body.</param>
/// <param name="density">The density.</param>
/// <param name="subdivisions">The subdivisions.</param>
public static void convertPathToPolygon( Path path, Body body, float density, int subdivisions )
{
if( !path.isClosed )
throw new Exception( "The path must be closed to convert to a polygon." );
var verts = path.getVertices( subdivisions );
var decomposedVerts = Triangulate.convexPartition( new Vertices( verts ), TriangulationAlgorithm.Bayazit );
foreach( Vertices item in decomposedVerts )
{
body.createFixture( new PolygonShape( item, density ) );
}
}
示例8: evenlyDistributeShapesAlongPath
/// <summary>
/// Duplicates the given Body along the given path for approximatly the given copies.
/// </summary>
/// <param name="world">The world.</param>
/// <param name="path">The path.</param>
/// <param name="shapes">The shapes.</param>
/// <param name="type">The type.</param>
/// <param name="copies">The copies.</param>
/// <param name="userData"></param>
/// <returns></returns>
public static List<Body> evenlyDistributeShapesAlongPath( World world, Path path, IEnumerable<Shape> shapes, BodyType type, int copies, object userData = null )
{
List<Vector3> centers = path.subdivideEvenly( copies );
List<Body> bodyList = new List<Body>();
for( int i = 0; i < centers.Count; i++ )
{
Body b = new Body( world );
// copy the type from original body
b.bodyType = type;
b.position = new Vector2( centers[i].X, centers[i].Y );
b.rotation = centers[i].Z;
b.userData = userData;
foreach( Shape shape in shapes )
{
b.createFixture( shape );
}
bodyList.Add( b );
}
return bodyList;
}
示例9: AttachCompoundPolygon
public static List<Fixture> AttachCompoundPolygon( List<Vertices> list, float density, Body body, object userData = null )
{
var res = new List<Fixture>( list.Count );
// Then we create several fixtures using the body
foreach( var vertices in list )
{
if( vertices.Count == 2 )
{
var shape = new EdgeShape( vertices[0], vertices[1] );
res.Add( body.createFixture( shape, userData ) );
}
else
{
var shape = new PolygonShape( vertices, density );
res.Add( body.createFixture( shape, userData ) );
}
}
return res;
}
示例10: AttachLoopShape
public static Fixture AttachLoopShape( Vertices vertices, Body body, object userData = null )
{
var shape = new ChainShape( vertices, true );
return body.createFixture( shape, userData );
}
示例11: AttachEdge
public static Fixture AttachEdge( Vector2 start, Vector2 end, Body body, object userData = null )
{
var edgeShape = new EdgeShape( start, end );
return body.createFixture( edgeShape, userData );
}