Nhảy trò chơi nền tảng 2D


7

Tôi hiện đang viết một trò chơi trong XNA cho vui, sử dụng C #. Tôi đã tải các họa tiết của mình và khi nhân vật di chuyển sang phải, anh ta trông như đang chạy sang phải và khi anh ta di chuyển sang trái, anh ta trông như đang chạy sang trái.

Tôi đã tìm kiếm một ví dụ mã hóa tốt ở mọi nơi để tạo ra khả năng nhảy. Tôi đã đọc tất cả những thứ vật lý mà tôi có thể chịu được và nó không giúp ích gì khi tôi không thể tìm ra cách sử dụng thanh không gian để nhảy nhưng không thể ngăn chúng sử dụng không gian chỉ nhảy lại cho đến khi chúng hạ cánh.

Câu trả lời:


8

Tạo một biến, canJump và đặt nó thành true bất cứ khi nào sprite của bạn nằm trên bề mặt có thể nhảy. Nếu bạn đang sử dụng vận tốc y âm mỗi khung hình thì hãy để phát hiện va chạm ngăn bạn rơi xuống đất, sau đó bạn có thể đặt canJump bất cứ khi nào người chơi sprite va chạm với địa hình. Bất cứ khi nào người chơi nhảy, chỉ cần đặt canJump thành false và nó sẽ giữ nguyên như vậy cho đến khi phát hiện va chạm thay đổi trở lại


3

Xác định điều này:

int gravity = 2, jump=50, spX=20,spY=20, surface=200;
bool click = false;
bool canJump = true;
Texture2D sprite;
MouseState m;

--- Cập nhật ---

m = Mouse.GetState();

        if (spY < surface)
        {
            spY += gravity;
        }
        else
        {
            if (spY == surface)
            {
                canJump = true ;
            }
        }
        if (m.LeftButton == ButtonState.Pressed)
        {
            click = true;
        }
        if ((click) && (m.LeftButton == ButtonState.Released))
        {
            if (canJump)
            {
                click = false;
                spY -= jump;
                canJump = false;
            }
        }

--- Ngày tận thế ---

---Vẽ tranh---

spriteBatch.Draw(sprite,new Vector2(spX,spY),Color.White);

--- EndDraw ---

Tôi đã thử nó, nó hoạt động tốt


2

Hãy xem hướng dẫn này: http://www.xnadevelopment.com/tutorials/thewizardjumping/thewizardjumping.shtml trang web cũng có đầy đủ các hướng dẫn thực sự hữu ích liên quan đến XNA.


XNADevelopment là một trang web tuyệt vời.
Vịt Cộng sản

Cảm ơn bạn rằng trang web thực tế là những gì tôi đang tìm kiếm. Bây giờ tôi đã hiểu và nó hoạt động theo cách tôi muốn, tôi cũng có thể đối phó với trọng lực và những gì không.
Bradley Kreuger

0

Những gì tôi đã làm trong quá khứ, là nhân vật của bạn giữ vận tốc theo từng hướng. Khi tôi muốn nhảy, tôi chỉ cần nói vel_y - = (vận tốc nhảy ở đây). Và tất nhiên tôi có một lực hấp dẫn không đổi.

Một tính năng thực sự hay khác mà bạn có thể xem xét khi thực hiện là toàn bộ khái niệm "bạn càng giữ nút lâu thì bạn càng đi cao". Tôi ghét điều đó khi các trò chơi chỉ nhảy một biến duy nhất và không cho phép tôi có cảm giác điều khiển.

Oh, và nhảy tường là mát mẻ =]

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.