خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

نحوه پیاده سازی مکانیک پرش در کتابخانه آرکید پایتون

اکثر بازی‌های پلتفرم از نوعی پرش استفاده می‌کنند، با تغییراتی از جمله پرش دوبل و پرش با ارتفاع متغیر. تکنیک های پشت این حرکات را کشف کنید.

مکانیک های پرش نقش مهمی در افزایش تجربه گیم پلی یک بازی پلتفرمر دارند. با پیاده سازی مکانیک های مختلف پرش با کتابخانه Arcade Python، می توانید به بازی های خود عمق و هیجان بیافزایید.

کتابخانه Arcade یک چارچوب بصری و با استفاده آسان برای ایجاد بازی ها فراهم می کند و آن را به انتخابی ایده آل برای ایجاد پلتفرمر شما تبدیل می کند.

یک بازی ساده بسازید

قبل از شروع، pip را روی دستگاه خود نصب کنید و از این دستور برای نصب ماژول آرکید استفاده کنید:

pip install arcade

برای کشف نحوه عملکرد مکانیک پرش، با ایجاد یک بازی ساده شروع کنید که در آن بازیکن می تواند با جاذبه و یک پلت فرم ایستا به چپ و راست حرکت کند.

کد استفاده شده در این مقاله در این مخزن GitHub موجود است و برای استفاده شما تحت مجوز MIT رایگان است.

در بازی، بازیکن با سکو برخورد می کند و بالای آن می ایستد. یک فایل جدید با نام simple-game.py ایجاد کنید و کد زیر را اضافه کنید:

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()

وقتی برنامه را اجرا می‌کنید، می‌بینید که جسم پخش‌کننده به سرعت روی سکو می‌افتد، سپس روی آن استراحت می‌کنید.

بازی ساده با پلتفرم و بازیکن

اضافه کردن یک ویژگی پرش ساده

حالا یک ویژگی پرش ساده به بازی اضافه کنید. برخورد بین بازیکن و سکو را بررسی کنید و هنگامی که بازیکن کلید فلش رو به بالا را فشار می‌دهد، عمل پرش را آغاز کنید. برای رسیدن به این هدف، یک فایل جدید به نام jump.py ایجاد کنید و کد آن را با به روز رسانی های زیر ایجاد کنید:

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

اضافه کردن یک ویژگی دو پرش

برای افزودن ویژگی پرش دوبل، منطق پرش موجود را گسترش دهید. وقتی بازیکن روی سکو باشد و برای اولین بار کلید فلش رو به بالا را فشار دهد، یک پرش معمولی انجام می دهد. با این حال، اگر آنها کلید فلش رو به بالا را دوباره در حالی که در هوا هستند فشار دهند، بازیکن یک پرش دوبل انجام می دهد.

مطلب مرتبط:   Rust Macro: چگونه استفاده از آنها می تواند کد شما را بهبود بخشد

یک فایل جدید با نام double-jump.py و کد آن با به روز رسانی های زیر ایجاد کنید:

class GameWindow(arcade.Window):
    def __init__(self):
        self.jump_count = 0 # Track the number of jumps

    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

از جمله ویژگی های اضافی

جدا از پرش های ساده و دوبل، ویژگی های زیادی وجود دارد که می توانید برای بهبود مکانیک پرش بازی خود اضافه کنید.

پیاده سازی ارتفاع پرش متغیر

اجازه دادن به بازیکن برای کنترل ارتفاع پرش های خود بر اساس مدت زمانی که دکمه پرش را نگه می دارد، می تواند کنترل و استراتژی بیشتری را به گیم پلی بازی اضافه کند. در اینجا مثالی از نحوه پیاده سازی ارتفاع پرش متغیر آورده شده است. یک فایل جدید با نام variable-jump.py و کد آن با به روز رسانی های زیر ایجاد کنید:

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):
        # Increase the jump power while the jump button is held
        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()

پیاده سازی ویژگی Air Dash

افزودن مکانیک داش هوا می تواند گزینه های حرکتی بیشتری را در حالی که در هوا است به بازیکن بدهد. یک فایل جدید با نام air-dash.py و کد آن با به روز رسانی های زیر ایجاد کنید:

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

هنگامی که خط هوایی را انجام می دهید، شخصیت بازیکن شما از پلت فرم دور می شود:

مطلب مرتبط:   نحوه قالب بندی رشته ها در Go

بازیکنی که در حال انجام داش هوایی روی یک سکو است

بهترین تمرین برای مکانیک پرش

پیاده سازی مکانیک های پرش در یک بازی مستلزم بررسی دقیق برای اطمینان از تجربه گیم پلی روان و لذت بخش است. در اینجا برخی از بهترین روش ها وجود دارد که باید به خاطر داشته باشید:

ارتفاع و مدت پرش را متعادل کنید

برای حفظ حس واقع گرایی و سختی بازی، مهم است که ارتفاع و مدت پرش را متعادل کنید. یک پرش خیلی بلند یا خیلی کوتاه می تواند روی گیم پلی تاثیر منفی بگذارد. برای یافتن تعادل مناسب برای بازی خود، ارتفاع و مدت زمان پرش های مختلف را آزمایش کنید.

هنگام تعیین مکانیک پرش مناسب، فیزیک، توانایی های شخصیت و طراحی سطح کلی بازی را در نظر بگیرید.

ارائه بازخورد بصری و صوتی

بازخورد بصری و صوتی برای ایجاد احساس پاسخگو و رضایت بخش در پرش ها بسیار مهم است. از انیمیشن ها یا جلوه های ذرات برای به تصویر کشیدن حرکت پرش و فرود بازیکن استفاده کنید.

علاوه بر این، اضافه کردن جلوه‌های صوتی یا موسیقی پس‌زمینه را در نظر بگیرید که تجربه پریدن را افزایش می‌دهد. این نشانه های بصری و صوتی به غوطه ور شدن و درگیر شدن بازیکنان کمک می کند.

تشخیص برخورد دقیق

تشخیص دقیق برخورد بین بازیکن و سکوها برای مکانیک پرش دقیق و قابل اعتماد ضروری است. اطمینان حاصل کنید که الگوریتم تشخیص برخورد قوی است و سناریوهای مختلف مانند فرود آمدن روی یک سکو، برخورد با موانع یا سر خوردن در امتداد دیوارها را به درستی مدیریت می کند.

کد تشخیص برخورد خود را آزمایش و تکرار کنید تا هر گونه اشکال یا ناهماهنگی که ممکن است بر مکانیک پرش تأثیر بگذارد را از بین ببرید.

مطلب مرتبط:   درک نحوه عملکرد Hoisting در جاوا اسکریپت

با مکانیک پرش بازی ها را سرگرم کننده تر کنید

اضافه شدن مکانیک های پرش می تواند تا حد زیادی درگیر شدن و لذت بردن از یک بازی را افزایش دهد. امکانات جدیدی را برای طراحی سطح، پازل ها و موانع چالش برانگیز باز می کند. با پیاده سازی مکانیک های مختلف پرش در کتابخانه بازی های آرکید پایتون، می توانید بازی های پلتفرمر جذابی ایجاد کنید که بازیکنان را ساعت ها سرگرم می کند.

به یاد داشته باشید، آزمایش با مکانیک های مختلف پرش و ترکیب ویژگی های منحصر به فرد می تواند بازی شما را متمایز کند و آن را به تجربه ای فراگیر و به یاد ماندنی برای بازیکنان تبدیل کند.