ارتق بتجربة اللعب الخاصة بك مع ألعاب Python Arcade من خلال دمج الكاميرا.

مكتبة Python Arcade هي إطار عمل قوي وسهل الاستخدام لإنشاء ألعاب ثنائية الأبعاد. تتمثل إحدى الميزات الرئيسية التي يمكن أن تعزز أسلوب اللعب وتجربة المستخدم بشكل كبير في إضافة كاميرا. تسمح إضافة كاميرا إلى لعبتك بالتلاعب الديناميكي بإطار العرض ، مما يتيح للاعب استكشاف عوالم أكبر للعبة ، أو التركيز على مناطق محددة ، أو تتبع الكائنات أثناء الحركة.

من خلال تحريك نقطة عرض الكاميرا ، يمكنك إنشاء تأثيرات جذابة بصريًا ، وتحسين آليات اللعب ، وتوفير تجربة ألعاب غامرة أكثر.

قم بإنشاء لعبة بسيطة

قبل البدء ، قم بتثبيت النقطة على جهازك واستخدم الأمر أدناه لتثبيت ملف ممر وحدة:

نقطة تثبيت الممرات

الآن ، ابدأ بإنشاء لعبة أساسية للتمرير الجانبي حيث يتحكم اللاعب في شخصية يمكنها التحرك إلى اليسار واليمين باستخدام مفاتيح الأسهم.

الكود المستخدم في هذه المقالة متوفر في هذا مستودع جيثب وهو مجاني لك لاستخدامه بموجب ترخيص MIT.

بالإضافة إلى ذلك ، يمكنك إضافة عقبة للاعب للتنقل حولها.

يستورد ممر

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
MOVEMENT_SPEED = 5

فصللعبتي(ممر. نافذة او شباك):

instagram viewer

def__فيه__(ذاتي ، عرض ، ارتفاع):
سوبر () .__ الحرف الأول __ (العرض ، الارتفاع)
self.player_x = العرض // 2
self.player_y = الارتفاع // 2

defيثبت(الذات):
arcade.set_background_color (arcade.color. SKY_BLUE)

defon_draw(الذات):
arcade.start_render ()
arcade.draw_circle_filled (self.player_x ، self.player_y ، 20، الممرات. أحمر)
arcade.draw_rectangle_filled (400, 200, 80, 40، الممرات. أخضر)

defتحديث(ذاتي ، delta_time):
يمر

defon_key_press(ذاتي ، مفتاح ، معدِّلات):
لو مفتاح == arcade.key. غادر:
self.player_x - = MOVEMENT_SPEED
أليف مفتاح == arcade.key. يمين:
self.player_x + = MOVEMENT_SPEED

لو __name__ == "__رئيسي__":
اللعبة = MyGame (SCREEN_WIDTH ، SCREEN_HEIGHT)
نمط اللعبة()
arcade.run ()

إعداد الكاميرا

لإضافة كاميرا إلى اللعبة ، قم بإنشاء ملف آلة تصوير فئة تدير موضع الكاميرا وحركتها. سيكون لهذا الفصل سمات مثل camera_x و camera_y لتخزين إحداثيات الكاميرا.

فصلآلة تصوير:
def__فيه__(الذات):
self.camera_x = 0
self.camera_y = 0

حركة الكاميرا مع مدخلات لوحة المفاتيح

بعد ذلك ، قم بتعديل ملفات on_key_press طريقة لتضمين الكاميرا حركة تعتمد على مدخلات اللاعب. عندما يتحرك اللاعب إلى اليسار أو اليمين ، يمكنك تحديث موضع الكاميرا وفقًا لذلك. أيضًا ، اضبط رمز الرسم لأخذ موضع الكاميرا في الاعتبار عند عرض كائنات اللعبة.

فصللعبتي(ممر. نافذة او شباك):
def__فيه__(ذاتي ، عرض ، ارتفاع):
سوبر () .__ الحرف الأول __ (العرض ، الارتفاع)
self.camera = الكاميرا ()
self.player_x = العرض // 2
self.player_y = الارتفاع // 2

defon_key_press(ذاتي ، مفتاح ، معدِّلات):
لو مفتاح == arcade.key. غادر:
self.player_x - = MOVEMENT_SPEED
self.camera.camera_x - = MOVEMENT_SPEED
أليف مفتاح == arcade.key. يمين:
self.player_x + = MOVEMENT_SPEED
self.camera.camera_x + = MOVEMENT_SPEED

defon_draw(الذات):
arcade.start_render ()
arcade.set_viewport (
self.camera.camera_x ،
self.camera.camera_x + SCREEN_WIDTH ،
self.camera.camera_y ،
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x ، self.player_y ، 20، الممرات. أحمر)
arcade.draw_rectangle_filled (400, 200, 80, 40، الممرات. أخضر)

حركة الكاميرا مع مدخلات الماوس

بالإضافة إلى إدخالات لوحة المفاتيح ، يمكنك أيضًا تمكين حركة الكاميرا بناءً على مدخلات الماوس. على سبيل المثال ، يمكنك السماح للمشغل بتحريك الكاميرا عن طريق سحب الشاشة. لتحقيق ذلك ، قم بتعديل ملف on_mouse_drag طريقة لتحديث موضع الكاميرا بناءً على حركة الماوس.

فصللعبتي(ممر. نافذة او شباك):
defon_mouse_drag(self، x، y، dx، dy، أزرار، معدِّلات):
لو أزرار == ​​رواق. MOUSE_BUTTON_LEFT:
self.camera.camera_x - = dx
self.camera.camera_y - = dy

بما في ذلك الميزات الإضافية

تفتح إضافة كاميرا إلى لعبتك عالمًا من الاحتمالات لميزات وتأثيرات إضافية. فيما يلي بعض الأمثلة عن كيفية تحسين لعبتك باستخدام نظام الكاميرا.

وظيفة التكبير

لتنفيذ وظيفة التكبير ، تحتاج إلى تقديم ملف تكبير متغير في آلة تصوير فئة وتعديل on_mouse_scroll طريقة لتحديث مستوى التكبير / التصغير بناءً على حركة عجلة الماوس. تحتاج أيضًا إلى ضبط ملف set_viewport المعلمات للنظر في مستوى التكبير.

فصلآلة تصوير:
def__فيه__(الذات):
self.camera_x = 0
self.camera_y = 0
self.zoom = 1.0

فصللعبتي(ممر. نافذة او شباك):

defon_mouse_scroll(self، x، y، scroll_x، scroll_y):
self.camera.zoom + = scroll_y * 0.1

defon_draw(الذات):
arcade.start_render ()
arcade.set_viewport (
self.camera.camera_x * self.camera.zoom ،
(self.camera.camera_x + SCREEN_WIDTH) * self.camera.zoom ،
self.camera.camera_y * self.camera.zoom ،
(self.camera.camera_y + SCREEN_HEIGHT) * self.camera.zoom
)
arcade.draw_circle_filled (self.player_x ، self.player_y ، 20، الممرات. أحمر)
arcade.draw_rectangle_filled (400, 200, 80, 40، الممرات. أخضر)

حركة الكاميرا السلسة

لتحقيق حركة أكثر سلاسة للكاميرا ، يمكنك تقديم تقنية استيفاء تسمى الاستيفاء الخطي (lerp). تعديل تحديث طريقة لتحريك الكاميرا تدريجيًا نحو الموضع المستهدف باستخدام lerp. هذا يخلق تأثير انتقال سلس.

فصلآلة تصوير:
def__فيه__(الذات):
self.camera_x = 0
self.camera_y = 0
self.target_x = 0
self.target_y = 0
self.lerp_speed = 0.1

defتحديث(الذات):
self.camera_x = arcade.lerp (self.camera_x، self.target_x، self.lerp_speed)
self.camera_y = arcade.lerp (self.camera_y، self.target_y، self.lerp_speed)

فصللعبتي(ممر. نافذة او شباك):

defتحديث(ذاتي ، delta_time):
self.camera.target_x = self.player_x - SCREEN_WIDTH // 2
self.camera.target_y = self.player_y - SCREEN_HEIGHT // 2
self.camera.update ()

defon_draw(الذات):
arcade.start_render ()
arcade.set_viewport (
self.camera.camera_x ،
self.camera.camera_x + SCREEN_WIDTH ،
self.camera.camera_y ،
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x ، self.player_y ، 20، الممرات. أحمر)
arcade.draw_rectangle_filled (400, 200, 80, 40، الممرات. أخضر)

قيود الكاميرا

لمنع الكاميرا من تجاوز حدود معينة ، يمكنك إدخال قيود. على سبيل المثال ، يمكنك تحديد الحد الأدنى والحد الأقصى لموضع الكاميرا والتأكد من بقاء الكاميرا ضمن تلك الحدود.

فصلآلة تصوير:
def__فيه__(الذات):
self.camera_x = 0
self.camera_y = 0
self.min_x = 0
self.max_x = 800
self.min_y = 0
max_y self.max_y = 600

defتحديث(الذات):
self.camera_x = max (self.min_x، min (self.camera_x، self.max_x))
self.camera_y = max (self.min_y، min (self.camera_y، self.max_y))

فصللعبتي(ممر. نافذة او شباك):

defتحديث(ذاتي ، delta_time):
self.camera.camera_x = self.player_x - SCREEN_WIDTH // 2
self.camera.camera_y = self.player_y - SCREEN_HEIGHT // 2
self.camera.update ()

defon_draw(الذات):
arcade.start_render ()
arcade.set_viewport (
self.camera.camera_x ،
self.camera.camera_x + SCREEN_WIDTH ،
self.camera.camera_y ،
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x ، self.player_y ، 20، الممرات. أحمر)
arcade.draw_rectangle_filled (400, 200, 80, 40، الممرات. أخضر)

هذه مجرد أمثلة قليلة لكيفية الاستفادة من نظام الكاميرا لتضمين ميزات وتأثيرات إضافية في ألعاب Python Arcade.

يمكنك أيضًا إضافة العديد من الميزات الإضافية الأخرى إلى الألعاب المستندة إلى Python. على سبيل المثال ، يمكنك جعل الكاميرا تتذكر موقعها عندما يكون ملف ينتقل اللاعب إلى مستوى مختلف. يضمن ذلك بقاء العرض كما هو عند الانتقال بين المستويات ، مما يوفر تجربة سلسة ومتسقة للاعب.

أفضل الممارسات لنظام الكاميرا

عند تنفيذ نظام الكاميرا في لعبة Python Arcade ، من الضروري اتباع أفضل الممارسات لضمان الأداء الأمثل وتجربة اللاعب السلسة. فيما يلي بعض الإرشادات الأساسية التي يجب وضعها في الاعتبار:

  • تجنب حركة الكاميرا المفرطة: بينما يمكن أن تضيف الكاميرا عناصر ديناميكية إلى لعبتك ، فمن الضروري تحقيق التوازن وتجنب حركة الكاميرا المفرطة. يمكن أن يؤدي التغيير المستمر في موضع الكاميرا إلى إرباك اللاعبين وجعل التنقل في عالم اللعبة أمرًا صعبًا بالنسبة لهم.
  • اختبار عبر مستويات دقة مختلفة ونسب العرض إلى الارتفاع: من الضروري اختبار نظام الكاميرا على مختلف درجات دقة الشاشة ونسب العرض إلى الارتفاع للتأكد من أنها تعمل بشكل جيد عبر الأجهزة والتكوينات المختلفة. سيساعدك هذا في تحديد أي مشكلات تتعلق بقياس منفذ العرض أو تحديد موضع الكائن أو تعديلات نسبة العرض إلى الارتفاع.
  • تحسين العرض: يمكن أن يؤثر نظام الكاميرا على أداء اللعبة ، خاصة عند عرض عوالم ألعاب كبيرة أو العديد من العناصر. لتحسين العرض ، حدد الكائنات التي تقع خارج عرض الكاميرا واستبعدها من العرض.
  • التعامل مع حالات الحافة: انتبه إلى حالات الحافة التي قد تواجه فيها الكاميرا سيناريوهات محددة ، مثل الحدود أو اكتشاف التصادم أو الكائنات المتداخلة. تأكد من أن نظام الكاميرا يتعامل مع هذه الحالات بأمان ويوفر انتقالات سلسة أو إشارات مرئية مناسبة للإشارة إلى القيود أو التفاعلات مع بيئة اللعبة.

باتباع أفضل الممارسات هذه ، يمكنك إنشاء نظام كاميرا قوي وسهل الاستخدام يتكامل بسلاسة مع ألعاب Python Arcade.

اجعل الألعاب أكثر متعة باستخدام الكاميرا

من خلال إضافة كاميرا إلى ألعاب Python Arcade ، يمكنك تحسين انغماس اللاعب ومشاركته بشكل كبير. سواء كان الأمر يتعلق بإنشاء عوالم ألعاب شاسعة ، أو التركيز على المناطق الحرجة ، أو تتبع الكائنات المتحركة ، فإن نظام الكاميرا يوفر أداة قوية لمطوري الألعاب.

بالاستفادة من حركة الكاميرا والتكبير / التصغير والتأثيرات الإضافية ، يمكنك إنشاء تجارب ساحرة تجذب اللاعبين وتجعلهم يعودون للحصول على المزيد.