/ / Cách triển khai Cơ chế nhảy trong Thư viện Arcade của Python

Cách triển khai Cơ chế nhảy trong Thư viện Arcade của Python

Cơ chế nhảy đóng một vai trò quan trọng trong việc nâng cao trải nghiệm chơi trò chơi của một trò chơi platformer. Bằng cách triển khai nhiều cơ chế nhảy khác nhau với Thư viện trò chơi điện tử của Python, bạn có thể thêm chiều sâu và sự thú vị cho trò chơi của mình.




Thư viện Arcade cung cấp một khung trực quan và dễ sử dụng để tạo trò chơi, làm cho nó trở thành một lựa chọn lý tưởng để tạo nền tảng của bạn.



Tạo một trò chơi đơn giản

Trước khi bắt đầu, hãy cài đặt pip trên thiết bị của bạn và sử dụng lệnh này để cài đặt giải trí mô-đun:

 pip install arcade 

Để khám phá cách hoạt động của cơ chế nhảy, hãy bắt đầu bằng cách tạo một trò chơi đơn giản trong đó người chơi có thể di chuyển sang trái và phải bằng trọng lực và nền tảng tĩnh.

Mã được sử dụng trong bài viết này có sẵn trong kho lưu trữ GitHub này và bạn được sử dụng miễn phí theo giấy phép MIT.

Trong trò chơi, người chơi sẽ va chạm với nền tảng và đứng trên nó. Tạo một tệp mới có tên đơn giản-game.py và thêm đoạn mã dưới đây:

 import arcade

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLAYER_RADIUS = 20
PLATFORM_WIDTH = 200
PLATFORM_HEIGHT = 20
GRAVITY = 0.5
blue = arcade.color.BLUE
green = arcade.color.GREEN

class GameWindow(arcade.Window):
    def __init__(self):
        super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Jumping Mechanics")
        self.player_x = SCREEN_WIDTH // 2
        self.player_y = SCREEN_HEIGHT // 2
        self.player_dy = 0
        self.platform_x = SCREEN_WIDTH // 2
        self.platform_y = SCREEN_HEIGHT // 4

    def on_draw(self):
        arcade.start_render()

        arcade.draw_circle_filled(self.player_x, self.player_y,
                                  PLAYER_RADIUS, blue)

        arcade.draw_rectangle_filled(self.platform_x, self.platform_y,
                                     PLATFORM_WIDTH, PLATFORM_HEIGHT, green)

    def on_update(self, delta_time):
        self.player_dy -= GRAVITY
        self.player_y += self.player_dy
        dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

        if self.player_y < dist:
            self.player_y = dist
            self.player_dy = 0

game = GameWindow()
arcade.run()

Khi bạn chạy chương trình, bạn sẽ thấy đối tượng trình phát nhanh chóng rơi xuống nền tảng, sau đó nằm yên trên đó.

trò chơi đơn giản với một nền tảng và một người chơi

Thêm một tính năng nhảy đơn giản

Bây giờ, hãy thêm một tính năng nhảy đơn giản vào trò chơi. Kiểm tra va chạm giữa người chơi và nền tảng và kích hoạt hành động nhảy khi người chơi nhấn phím mũi tên lên. Để đạt được điều này, hãy tạo một tệp mới có tên nhảy.py và mã với các bản cập nhật dưới đây:

 class GameWindow(arcade.Window):
    def __init__(self):
        

    def on_key_press(self, key, modifiers):
        on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

        if key == arcade.key.UP and self.player_y == on_ground:
            self.player_dy = 10
    
    def on_update(self, delta_time):
        self.player_dy -= GRAVITY
        self.player_y += self.player_dy
        dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

        if self.player_y < dist:
            self.player_y = dist
            self.player_dy = 0
            self.jump_count = 0

Thêm tính năng nhảy đôi

Để thêm tính năng nhảy kép, hãy mở rộng logic nhảy hiện có. Khi người chơi ở trên bục và nhấn phím mũi tên lên lần đầu tiên, họ sẽ thực hiện một cú nhảy thông thường. Tuy nhiên, nếu họ nhấn lại phím mũi tên lên khi đang ở giữa không trung, người chơi sẽ thực hiện một cú nhảy kép.

Tạo một tệp mới có tên double-jump.py và mã với các bản cập nhật dưới đây:

 class GameWindow(arcade.Window):
    def __init__(self):
        self.jump_count = 0

    def on_key_press(self, key, modifiers):
        on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

        if key == arcade.key.UP:
            if self.player_y == on_ground or self.jump_count < 2:
                self.player_dy = 10
                self.jump_count += 1

Bao gồm các tính năng bổ sung

Ngoài các bước nhảy đôi và đơn giản, bạn có thể thêm nhiều tính năng để nâng cao cơ chế nhảy trong trò chơi của mình.

Thực hiện chiều cao bước nhảy thay đổi

Việc cho phép người chơi kiểm soát độ cao của bước nhảy dựa trên thời gian họ giữ nút nhảy có thể tăng thêm khả năng kiểm soát và chiến lược cho trò chơi. Đây là một ví dụ về cách bạn có thể triển khai chiều cao bước nhảy thay đổi. Tạo một tệp mới có tên biến-jump.py và mã với các bản cập nhật dưới đây:

 GRAVITY = 0.5
JUMP_POWER_INCREMENT = 0.2
MAX_JUMP_POWER = 100

class GameWindow(arcade.Window):
    def __init__(self):
        super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Jumping Mechanics")
        self.jump_pressed = False
        self.jump_power = 0

    def on_key_press(self, key, modifiers):
        on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

        if key == arcade.key.UP and self.player_y == on_ground:
            self.jump_pressed = True

    def on_key_release(self, key, modifiers):
        if key == arcade.key.UP:
            self.jump_pressed = False

    def update_jump_power(self):
        
        if self.jump_pressed:
            self.jump_power += JUMP_POWER_INCREMENT

            if self.jump_power > MAX_JUMP_POWER:
                self.jump_power = MAX_JUMP_POWER
        else:
            if self.jump_power > 0:
                self.jump_power -= 1

    def on_update(self, delta_time):
        self.player_dy -= GRAVITY
        dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

        if self.player_y == dist and self.jump_power > 0:
            self.player_dy = self.jump_power

        self.player_y += self.player_dy
        self.update_jump_power()

Triển khai tính năng Air Dash

Thêm một cơ chế lướt trên không có thể cung cấp cho người chơi các tùy chọn di chuyển bổ sung khi ở giữa không trung. Tạo một tệp mới có tên air-dash.py và mã với các bản cập nhật dưới đây:

 AIR_DASH_DISTANCE = 100
MAX_AIR_DASHES = 2

class GameWindow(arcade.Window):
    def __init__(self):
        super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Jumping Mechanics")
        self.on_ground = False
        self.air_dashes = 0
        self.can_air_dash = True

    def on_key_press(self, key, modifiers):
        if key == arcade.key.UP and self.on_ground:
            self.player_dy = 10
        elif key == arcade.key.UP and
                self.air_dashes < MAX_AIR_DASHES and
                self.can_air_dash:
            self.player_dx = AIR_DASH_DISTANCE
            self.air_dashes += 1
            self.can_air_dash = False

    def on_update(self, delta_time):
        self.player_dy -= GRAVITY
        self.player_y += self.player_dy

        dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

        if self.player_y <= dist:
            self.player_y = dist
            self.player_dy = 0
            self.on_ground = True
        else:
            self.on_ground = False

        self.player_x += self.player_dx

        if self.player_x < PLAYER_RADIUS:
            self.player_x = PLAYER_RADIUS
            self.player_dx = 0
        elif self.player_x > SCREEN_WIDTH - PLAYER_RADIUS:
            self.player_x = SCREEN_WIDTH - PLAYER_RADIUS
            self.player_dx = 0

        if self.on_ground:
            self.air_dashes = 0
            self.can_air_dash = True

Khi bạn thực hiện cú lướt trên không, nhân vật người chơi của bạn sẽ di chuyển ra xa nền tảng:

người chơi thực hiện air dash trên một nền tảng

Thực hành tốt nhất cho cơ học nhảy

Việc triển khai cơ chế nhảy trong trò chơi cần được cân nhắc cẩn thận để đảm bảo trải nghiệm chơi mượt mà và thú vị. Dưới đây là một số thực tiễn tốt nhất cần ghi nhớ:

Cân bằng chiều cao và thời gian nhảy

Để duy trì cảm giác chân thực và độ khó của trò chơi, điều quan trọng là phải cân bằng độ cao và thời gian nhảy. Cú nhảy quá cao hoặc quá ngắn có thể tác động tiêu cực đến lối chơi. Thử nghiệm với các độ cao và thời lượng nhảy khác nhau để tìm ra sự cân bằng phù hợp cho trò chơi của bạn.

Xem xét tính chất vật lý, khả năng của nhân vật và thiết kế cấp độ tổng thể của trò chơi khi xác định cơ chế nhảy phù hợp.

Cung cấp phản hồi bằng hình ảnh và âm thanh

Phản hồi bằng hình ảnh và âm thanh là rất quan trọng để làm cho các bước nhảy trở nên nhạy bén và thỏa mãn. Sử dụng hoạt ảnh hoặc hiệu ứng hạt để mô tả chuyển động nhảy và hạ cánh của người chơi.

Ngoài ra, hãy xem xét thêm hiệu ứng âm thanh hoặc nhạc nền để nâng cao trải nghiệm nhảy. Những tín hiệu hình ảnh và âm thanh này góp phần tạo nên sự đắm chìm và tương tác của người chơi.

Tinh chỉnh phát hiện va chạm

Phát hiện va chạm chính xác giữa người chơi và nền tảng là điều cần thiết cho cơ chế nhảy chính xác và đáng tin cậy. Đảm bảo rằng thuật toán phát hiện va chạm mạnh mẽ và xử lý đúng cách các tình huống khác nhau, chẳng hạn như hạ cánh trên nền tảng, va chạm với chướng ngại vật hoặc trượt dọc theo tường.

Kiểm tra và lặp lại mã phát hiện va chạm của bạn để loại bỏ mọi trục trặc hoặc sự không nhất quán có thể ảnh hưởng đến cơ chế nhảy.

Làm cho trò chơi thú vị hơn với cơ chế nhảy

Việc bổ sung cơ chế nhảy có thể nâng cao đáng kể mức độ tương tác và sự thích thú của trò chơi. Nó mở ra những khả năng mới cho thiết kế cấp độ, câu đố và những chướng ngại vật đầy thử thách. Bằng cách triển khai các cơ chế nhảy khác nhau trong Thư viện trò chơi điện tử của Python, bạn có thể tạo các trò chơi platformer hấp dẫn giúp người chơi giải trí hàng giờ.

Hãy nhớ rằng, việc thử nghiệm các cơ chế nhảy khác nhau và kết hợp các tính năng độc đáo có thể tạo nên sự khác biệt cho trò chơi của bạn và biến nó thành một trải nghiệm sống động và đáng nhớ cho người chơi.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *