איסוף מטבעות דו מימדי באחדות
איסוף ואיסוף מטבעות הפכו למרכיב עיקרי במשחקי דו-ממד, במיוחד ב-2D Platformers.
כדי להרים מטבע ב-Unity נצטרך ליצור סקריפט שיצורף לאובייקט coin וייהרס ברגע שהשחקן יבוא איתו במגע, עדכון ערך המונה.
אני אשתמש ב-2D Character Controller, אבל אתה יכול לדלג על החלק הזה אם כבר יש לך בקר 2D.
שלבים
כדי ליצור מטבע דו מימדי שניתן לאסוף ולאסוף, בצע את השלבים הבאים:
- צור GameObject חדש (GameObject -> Create Empty) ושם לו "Coin"
- צרף רכיב SpriteRenderer לאובייקט "Coin"
- הקצה את ספרייט המטבע שלך ל-SpriteRenderer (תוכל להשתמש בתמונה למטה, ודא שסוג הטקסטורה בהגדרות הייבוא מוגדר ל-'Sprite (2D and UI)')
- קנה קנה מידה של אובייקט המטבע עד לגודל הרצוי
- שנה את מיקום ציר המטבע 'Z' כך שיתאים למיקום השחקן
- צרף רכיב BoxCollider2D לאובייקט "Coin"
- צור סקריפט חדש, קרא לו "SC_2DCoin", הסר ממנו הכל ואז הדבק בתוכו את הקוד למטה:
SC_2DCoin.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SC_2DCoin : MonoBehaviour
{
//Keep track of total picked coins (Since the value is static, it can be accessed at "SC_2DCoin.totalCoins" from any script)
public static int totalCoins = 0;
void Awake()
{
//Make Collider2D as trigger
GetComponent<Collider2D>().isTrigger = true;
}
void OnTriggerEnter2D(Collider2D c2d)
{
//Destroy the coin if Object tagged Player comes in contact with it
if (c2d.CompareTag("Player"))
{
//Add coin to counter
totalCoins++;
//Test: Print total number of coins
Debug.Log("You currently have " + SC_2DCoin.totalCoins + " Coins.");
//Destroy coin
Destroy(gameObject);
}
}
}
- צרף את הסקריפט SC_2DCoin לאובייקט "Coin"
- בחר את אובייקט השחקן שלך וודא שהתג שלו מוגדר ל-"Player" (זה נחוץ כדי להיות מסוגל להרים את המטבע)
המטבע מוכן כעת, אתה יכול לשמור אותו ב-Prefab ולשכפל אותו סביב הרמה.
כדי ליצור מונה מטבעות, בצע את השלבים הבאים:
- צור תמונת ממשק משתמש חדשה על ידי לחיצה ימנית על תצוגת ההיררכיה -> ממשק משתמש -> תמונה ושמה "CoinIcon"
- הקצה מטבעות לרכיב Image
- שנה את יישור RectTransform ל-'top left', סובב ל-(0, 1), פוסט X ל-'5', Pos Y ל-'-5', רוחב וגובה ל-* '25'
- צור טקסט חדש על ידי לחיצה ימנית על תצוגת ההיררכיה -> ממשק משתמש -> טקסט ושם לו "CoinCounter"
- הגדר את "CoinCounter" RectTransform זהה ל-"CoinIcon", למעט הגדר את Pos X ל-'35' ואת הרוחב ל- '160'
- הגדר את סגנון גופן טקסט ל-'Bold', גודל גופן ל-22, יישור ל-'left center' וצבע ל- 'white'
- צור סקריפט חדש, קרא לו "SC_CoinCounter", הסר ממנו הכל ואז הדבק בתוכו את הקוד למטה:
סקריפט מונה המטבעות יחיל את מספר המטבעות על אלמנט הטקסט.
SC_CoinCounter.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SC_CoinCounter : MonoBehaviour
{
Text counterText;
// Start is called before the first frame update
void Start()
{
counterText = GetComponent<Text>();
}
// Update is called once per frame
void Update()
{
//Set the current number of coins to display
if(counterText.text != SC_2DCoin.totalCoins.ToString())
{
counterText.text = SC_2DCoin.totalCoins.ToString();
}
}
}
- צרף את הסקריפט SC_CoinCounter לאובייקט הטקסט "CoinCounter"
לחץ על Play וצפה במטבעות נעלמים ביצירת קשר עם שחקן ומתווספים למונה.