2013-03-21 3 views
1

как создать жесткую (твердый/без отскока) в физике мире, я пытаюсь то же самое с ниже кодомПредсказатель Физик Твердого тела, когда реституция = 0

Body bodyBall = BodyFactory.CreateBody(world); 
CircleShape circleShape = new CircleShape(ConvertUnits.ToSimUnits(textureWidth/2f), .1f); 
Fixture fixtureBall = bodyBall.CreateFixture(circleShape); 
bodyBall.BodyType = BodyType.Dynamic; 
bodyBall.Restitution = 0f; 

хотя я установить реституцию 0, он отскакивает когда он сталкивается с другими (теми же) телами.

ответ

2

Реституция при столкновении является функцией величины Restitution имущества обоих светильников.

Эта функция может быть изменена путем изменения кода в Farseer, в частности путем изменения метода FarseerPhysics.Settings.MixRestitution в Settings.cs. Вот реализация по умолчанию, которая возвращает максимальное из двух значений реституции:

public static float MixRestitution(float restitution1, float restitution2) 
{ 
    return restitution1 > restitution2 ? restitution1 : restitution2; 
} 

Таким образом, вы можете изменить этот метод (возможно, чтобы вернуть минимум, а). Или вы можете просто установить значение Restitution всех задействованных приборов в ноль.

+0

Спасибо! просто хочу знать .. Body.Restitation и Fixture.Restституции такие же? – Yogesh

+0

'Fixture.Restitution' является * актуальным * значением. 'Body.Restitution' - это помощник, который получает среднее значение от реставрации всех инструментов этого тела или устанавливает их все одинаковое значение. При использовании Farseer я нахожу, что он помогает построить его из источника - потому что он делает такую ​​вещь легкой для проверки. –