Menu
CoddyTech

כוכב אחר כוכב

חלק מהיחידה יסודות התכנות ב-Unity במסלול ה-Unity של Coddy. שיעור 39 מתוך 67.

challenge icon

אתגר

בינוני

שלח כוכב חדש אחרי כל תפיסה וכל פספוס. כוכב מתפספס כשהערך של y שלו יורד מתחת ל־0. בין אם הכוכב נתפס ובין אם הוא מתפספס, הוא מתחיל מחדש ב־y = 6 וב־z = 0, בערך x אקראי בין ‎-4 ל־4. Random.Range(min, max) מחזירה מספר ממשי אקראי בין min ל־max, ולכן Random.Range(-4f, 4f) בוחרת את ערך x הזה.

בשני המקרים הכוכב מתחיל מחדש באותו אופן, אז כתוב את הקוד פעם אחת במתודה, void ResetStar(), וקרא לה משני המקומות. פספוס לא מוסיף ניקוד. השאר את כל מה שנעשה בשלבים הקודמים.

נסו בעצמכם

using UnityEngine;

public class Catcher : MonoBehaviour
{
    [SerializeField] private float speed = 6f;
    [SerializeField] private Transform star;
    [SerializeField] private float fallSpeed = 3f;
    private int score;

    void Update()
    {
        float x = transform.position.x;
        if (Input.GetKey(KeyCode.RightArrow))
        {
            x += speed * Time.deltaTime;
        }
        if (Input.GetKey(KeyCode.LeftArrow))
        {
            x -= speed * Time.deltaTime;
        }
        x = Mathf.Clamp(x, -4f, 4f);
        transform.position = new Vector3(x, transform.position.y, transform.position.z);

        star.position += Vector3.down * fallSpeed * Time.deltaTime;

        if (Vector3.Distance(transform.position, star.position) < 1f)
        {
            score++;
            Debug.Log("Caught! Score: " + score);
            star.position = new Vector3(star.position.x, 6f, star.position.z);
        }
    }
}

כל השיעורים ביחידה יסודות התכנות ב-Unity