本文整理汇总了C#中FarseerPhysics.Dynamics.Fixture.OnCollision方法的典型用法代码示例。如果您正苦于以下问题:C# Fixture.OnCollision方法的具体用法?C# Fixture.OnCollision怎么用?C# Fixture.OnCollision使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FarseerPhysics.Dynamics.Fixture
的用法示例。
在下文中一共展示了Fixture.OnCollision方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: PlatformCollisionRaycast
protected float PlatformCollisionRaycast(Fixture fixture, Microsoft.Xna.Framework.Vector2 point, Microsoft.Xna.Framework.Vector2 normal, float fraction)
{
// TODO: Have these values be not hard-coded
lock(Program.MainUpdateLock)
{
if(fixture == FixtureUpper || fixture == FixtureLower)
return 1.0f;
//if(JumpTimer.Elapsed.TotalMilliseconds > 50 && GoneDown)
{
if(Jumping && Body.LinearVelocity.Y < 0.01)
{
PlayAnimation(AnimationEndJump);
_AnimationNext = new Lazy<SpriteAnimation>(() => { return AnimationStationary; });
// TODO: See the other comment regarding disabling the
// lower body fixture; this is for collision rather than
// separation
// TODO: Hack apart Farseer Physics to make it suck less
//var manifold = new Manifold();
//manifold.LocalPoint = point;
//manifold.LocalNormal = normal;
AABB fixture_upper_aabb, fixture_lower_aabb;
FixtureLower.CollisionCategories = Category.Cat1;
FixtureUpper.GetAABB(out fixture_upper_aabb, 0);
FixtureLower.GetAABB(out fixture_lower_aabb, 0);
if(FixtureLower.OnCollision != null)
FixtureLower.OnCollision(FixtureLower, fixture, null);
if(fixture.OnCollision != null)
fixture.OnCollision(fixture, FixtureLower, null);
PositionWorldY += fixture_upper_aabb.LowerBound.Y - fixture_lower_aabb.LowerBound.Y;
}
}
}
return 0;
}