יצירת פלטפורמה דו-ממדית פשוטה ב-Unity

במדריך זה, ניצור פלטפורמת 2D בסיסית ב-Unity. זה יכלול יצירת דמות שחקן שיכולה לנוע, לקפוץ ולקיים אינטראקציה עם פלטפורמות. נוסיף גם כמה אלמנטים בסיסיים במשחק כמו מכשולים ופריטי אספנות.

1. הגדרת הפרויקט

בואו נתחיל בהקמת פרויקט חדש Unity דו-ממדי:

  1. פתח את Unity וצור פרויקט דו-ממדי חדש.
  2. עבור אל File > New Scene ובחר במצב 2D.
  3. שמור את הסצנה בתור MainScene.

2. יצירת דמות הנגן

תחילה ניצור דמות שחקן פשוטה באמצעות ספרייט ונוסיף פונקציונליות תנועה:

  1. לחץ לחיצה ימנית בחלון Hierarchy ובחר Create Empty. תן שם לאובייקט זה שחקן.
  2. הוסף רכיב Sprite Renderer לאובייקט הנגן על ידי לחיצה על הוסף רכיב במפקח.
  3. בחר ספרייט לשימוש כדמות, על ידי יצירה משלך או ייבוא ​​נכס דו-ממדי מה-Unity Asset Store.
  4. הוסף Rigidbody2D ו-BoxCollider2D לאובייקט Player לפיזיקה וזיהוי התנגשות.

3. כתיבת תסריט תנועת הנגן

כעת, בואו נכתוב תסריט כדי לאפשר לשחקן לזוז ולקפוץ. בצע את השלבים הבאים:

  1. לחץ לחיצה ימנית בחלון Project ובחר Create > C# Script. תן לזה PlayerController.
  2. צרף סקריפט זה לאובייקט הנגן על ידי גרירתו מחלון הפרויקט לנגן בהיררכיה.

החלף את התוכן של הסקריפט בדברים הבאים:

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public float moveSpeed = 5f;
    public float jumpForce = 7f;
    private Rigidbody2D rb;
    private bool isGrounded = true;

    void Start()
    {
        rb = GetComponent();
    }

    void Update()
    {
        // Player movement
        float moveInput = Input.GetAxis("Horizontal");
        rb.velocity = new Vector2(moveInput * moveSpeed, rb.velocity.y);

        // Jumping
        if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
        {
            rb.velocity = new Vector2(rb.velocity.x, jumpForce);
            isGrounded = false;
        }
    }

    private void OnCollisionEnter2D(Collision2D collision)
    {
        // Check if player is touching the ground
        if (collision.collider.CompareTag("Ground"))
        {
            isGrounded = true;
        }
    }
}

4. יצירת פלטפורמות וסביבה

כעת ניצור פלטפורמות עבור השחקן לקפוץ עליהן:

  1. בהיררכיה, לחץ לחיצה ימנית ובחר Create Empty, ואז תן לזה Platform.
  2. הוסף BoxCollider2D ו-Sprite Renderer לפלטפורמה.
  3. בחר ספרייט לפלטפורמה (למשל, מלבן שטוח).
  4. שכפל את הפלטפורמה על ידי לחיצה על Ctrl+D (או Cmd+D ב-Mac) ומקם את העותקים כדי ליצור רמה.
  5. תייגו את האובייקטים האלה בתור Ground ב-Inspector עבור היגיון הקפיצה של השחקן.

5. הוספת מכשולים

כדי להפוך את המשחק למאתגר יותר, בואו נוסיף כמה מכשולים:

  • צור GameObject ריק נוסף וקרא לו Obstacle.
  • הוסף BoxCollider2D ו-Sprite Renderer לאובייקט זה.
  • בחר ספרייט עבור המכשול (למשל, ספייק או מפגע).
  • בשיטת OnCollisionEnter2D של השחקן, אתה יכול לזהות התנגשויות עם מכשולים ולהפעיל מחדש את המשחק או לנכות את הבריאות.

6. הוספת פריטי אספנות

אנו יכולים גם להוסיף פריטי אספנות, כגון מטבעות או כוח-אפים:

  • צור GameObject ריק נוסף וקרא לו Collectible.
  • הוסף CircleCollider2D (הגדר אותו כטריגר) ו-Sprite Renderer כדי לייצג את פריט האספנות.
  • כתוב סקריפט פשוט כדי לזהות מתי השחקן אוסף פריט:
using UnityEngine;

public class Collectible : MonoBehaviour
{
    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.CompareTag("Player"))
        {
            // Add points or other effects here
            Destroy(gameObject); // Remove the collectible from the scene
        }
    }
}

7. בדיקה והתאמה של המשחק

כעת, כשהמכניקה הבסיסית קיימת, אתה יכול לבדוק את המשחק על ידי לחיצה על כפתור ההפעלה. נסה להתאים את הדברים הבאים:

  • שנה את ערכי moveSpeed ו-jumpForce כדי לשנות את מהירות התנועה והדילוג של השחקן.
  • שכפל פלטפורמות ומכשולים כדי ליצור רמות שונות.
  • הוסף רכיבי רקע או עיטורים כדי להפוך את המשחק למושך מבחינה ויזואלית.

8. שיפור הפלטפורמה

כדי לקחת את הפלטפורמה שלך לשלב הבא, שקול להוסיף:

  • אנימציות לשחקן, כגון אנימציות הליכה וקפיצה.
  • אפקטים קוליים לקפיצה, איסוף פריטים ופגיעה במכשולים.
  • מצלמה העוקבת אחר תנועות השחקן לתצוגה דינמית יותר של המשחק.

מַסְקָנָה

עם ההגדרה הפשוטה הזו של פלטפורמת 2D, יש לך כעת מבנה משחק בסיסי שניתן להרחיב עם עוד תכונות, רמות וליטוש. התנסה עם מכניקות שונות וצור פלטפורמה ייחודית משלך.