protected override void UpdateBehaviour(float elapsedSeconds, float totalSeconds) { if (Vector2.Distance(lastLocation, Entity.Body.Position) > 0.3) { lastLocation = Entity.Body.Position; timeStuck = 0; } timeStuck += elapsedSeconds; if (timeStuck > 2) { if (obstacleSensor.SensedEntity != null && obstacleSensor.SensedEntity.Body.BodyType == FarseerPhysics.Dynamics.BodyType.Static) { Entity.Body.ApplyLinearImpulse(RandomExt.GetRandomVector(10, 30) * Weight); Entity.Body.ApplyAngularImpulse(RandomExt.GetRandomFloat(100, 300) * Weight); } } }