Sanırım Box2d'yi herhangi bir vücut için bir çeşit maksimum hıza sahip olacak şekilde yapılandırdım, ama emin değilim. Ben (100000000, 100000000)
gibi bir dürtü uygulayın ve vücut (100, 100)
kadar hızlı hareket ediyor - ki bu hiç de hızlı değil.Box2d: Maksimum olası doğrusal hız?
Box2d XNA C# bağlantı noktasını kullanıyorum.
Oyunum yukarıdan aşağıya 2d. 1000f
den 1000000000f
yerde olduğunu
private void ApplyImpulseFromInput()
{
Vector2 movementImpulse = new Vector2();
if (inputReader.ControlActivation(ActionInputType.MOVE_LEFT) == 1f)
{
movementImpulse.X = -Constants.PLAYER_IMPULSE_CONSTANT;
} else if (inputReader.ControlActivation(ActionInputType.MOVE_RIGHT) == 1f)
{
movementImpulse.X = Constants.PLAYER_IMPULSE_CONSTANT; ;
}
if (inputReader.ControlActivation(ActionInputType.MOVE_UP) == 1f)
{
movementImpulse.Y = -Constants.PLAYER_IMPULSE_CONSTANT; ;
} else if (inputReader.ControlActivation(ActionInputType.MOVE_DOWN) == 1f)
{
movementImpulse.Y = Constants.PLAYER_IMPULSE_CONSTANT; ;
}
model.Body.ApplyImpulse(movementImpulse, model.Position);
}
Constants.PLAYER_IMPULSE_CONSTANT
, oynatıcı taşıyabilirsiniz: Burada
private readonly Vector2 GRAVITY = new Vector2(0, 0);
public void initializePhysics(ContactReporter contactReporter)
{
world = new World(GRAVITY, true);
IContactListener contactListener = contactReporter;
world.ContactListener = contactListener;
}
public void Update(GameTime gameTime)
{
// ...
worldState.PhysicsWorld.Step((float)gameTime.ElapsedGameTime.TotalSeconds, 10, 10);
//...
}
dürtü uygular bazı örnek kod şudur: Burada
ilgili olabilecek bazı koddur En
(-120, -120)
,
(120, 120)
. Sabit
1f
gibi daha az ise, oyuncu daha yavaş hareket edecektir.
controller.Model.BodyDef = new BodyDef();
controller.Model.BodyDef.type = controller.Model.Mobile ? BodyType.Dynamic : BodyType.Static;
controller.Model.Body = worldState.PhysicsWorld.CreateBody(controller.Model.BodyDef);
controller.Model.Body.SetLinearDamping(10.0f);
muhtemelen sönümleme doğrusal olabilir:
Bu kod oyun dünyasında her şey için fizik kurmak için kullanılır? Hiçbir etkisi olmadan 10.0f
'dan 0
'a değiştirdim.
Update: doğrusal Sönümlü weirdness:
Linear Damping Max Speed
0f 120
10f 120
50f 120
55f 90
60f 0
70f 0
100f 0
100000f 0
neden 50f
arasında sönümleme lineer bir grup hassasiyet vardır: Yukarıda darbe yöntemi uygulamak ile taşınır gövde üzerinde, bu gözlemler yapmış ve 60f
?
Dürtüyi uygulayan kod yararlı olabilir. –
Üzgünüm. Ekledi Bunu reddedenlere karşı koymak için –
+1. Bu meşru bir sorudur. – avpx