Menu
CoddyTech

טווח תותחים

חלק מהיחידה פיזיקה ומשחקיות במסלול ה-Unity של Coddy. שיעור 61 מתוך 63.

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

כתבו שני סקריפטים: Cannon על ה-Barrel ו-Target על כל מטרה.

challenge icon

אתגר

קשה

החלון Inspector מספק ל־Cannon את ballPrefab (רכיב Rigidbody: קדם־הכינוי Ball, מסה 2, עם התג Ball), את angle (30), את turnSpeed (40), את power (30) ואת balls (5).

  • החץ למעלה מגדיל את angle והחץ למטה מקטין אותו, בקצב של turnSpeed מעלות לשנייה, בלי לרדת מתחת ל־10 או לעלות מעל 60. בכל פריים, קובעים את סיבוב הקנה ל־Quaternion.Euler(-angle, 0, 0): ב־Unity זווית x חיובית מטה את החזית כלפי מטה, לכן סימן המינוס מטה אותה כלפי מעלה.
  • לחיצה על מקש הרווח יורה כדור כל עוד balls גדול מ־0: יוצרים אותו במרחק של יחידה אחת לפני מרכז הקנה, לאורך הקנה, דוחפים אותו בעוצמה power באמצעות Impulse לאורך הקנה, מפחיתים 1 מ־balls ומתעדים כמה נשארו, כמו Balls left: 4. כשלא נשארו כדורים, לחיצה על מקש הרווח לא עושה דבר.

לכל מטרה יש Rigidbody קינמטי, והחלון Inspector מספק ל־Target את speed ואת range (2 ו־3 עבור Target1).

  • בכל צעד פיזיקה, מזיזים את המטרה לאורך ציר x באמצעות MovePosition במהירות של speed יחידות לשנייה, ומסובבים אותה בחזרה בכל פעם שהיא מתרחקת range יחידות מהמקום שבו התחילה.
  • כשכדור (שמתויג בתג Ball) פוגע במטרה, מתעדים את שם המטרה ואת hit!, כמו Target2 hit!, ומשמידים גם את המטרה וגם את הכדור. כל דבר שאינו כדור לא משפיע עליה.

לחצו על Play והפילו את שלוש המטרות, ואז לחצו על Check.

נסו בעצמכם

using UnityEngine;

public class Cannon : MonoBehaviour
{
    [SerializeField] private Rigidbody ballPrefab;
    [SerializeField] private float angle = 30f;
    [SerializeField] private float turnSpeed = 40f;
    [SerializeField] private float power = 30f;
    [SerializeField] private int balls = 5;

    void Update()
    {
        // כוונו בעזרת החצים למעלה ולמטה, וירו באמצעות Space
    }
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה פיזיקה ומשחקיות