Tôi đang cố tạo hiệu ứng hình ảnh 2d trong trò chơi XNA 2D của mình, bằng lực hấp dẫn. Tôi đã phát triển một lớp rất cơ bản để đạt được hiệu ứng mô phỏng. Đây là mã mẫu của tôi.Lực hấp dẫn mô phỏng trong XNA
namespace Capture
{
class PhysX
{
static Vector2 g = new Vector2(0.0f, 10.0f);
public Vector2 pos, vel, acc, accumForce;
public float mass;
public bool USE_GRAVITY = true;
/* Constructor */
public void Engage(ref GameTime gameTime, uint maxX, uint maxY)
{
Vector2 F = Vector2.Zero;
if (USE_GRAVITY)
{
F = accumForce + mass * g;
}
acc = F/mass;//This is the Net acceleration, Using Newtons 2nd Law
vel += acc * gameTime.TotalGameTime.Seconds;// v = u + a*t
pos += vel * gameTime.TotalGameTime.Seconds;// s = u*t + 0.5*a*t*t,
pos.X %= maxX;
pos.Y %= maxY;
}
public void ApplyForce(ref Vector2 f)
{
accumForce += f;
}
}
}
Tôi đang gọi phương thức PhysX#Engage()
theo phương thức Game#Update(GameTime gt)
. Vấn đề là tôi không nhận được một hình ảnh động trơn tru. Điều này là do vị trí rất sớm. Để khắc phục điều đó, tôi đã cố gắng thực hiện mô đun, như hiển thị trong mã với Viewport.Width, Viewport.Height
nhưng vẫn là tọa độ vị trí không hề mượt mà. Tôi nên làm gì. Làm thế nào để làm cho hình ảnh động trơn tru? Hãy giúp tôi.
là gì khối lượng của bạn thiết lập để? khối lượng càng cao thì tốc độ gia tốc càng chậm. –
@SteveH thuật ngữ đại chúng trong lực lượng và phân chia theo khối lượng hủy bỏ. Gia tốc trọng lực không phụ thuộc vào khối lượng. – CodesInChaos
@Anurag Tốc độ của bạn tăng tuyến tính theo thời gian. Thông thường bạn giới thiệu một thuật ngữ làm chậm tốc độ tuyến tính để mô phỏng ma sát và giới hạn vận tốc đầu cuối. – CodesInChaos