Menu
CoddyTech

להסתכל על דברים

חלק מהיחידה יסודות הסקריפטים ב-Unity במסלול ה-Unity של Coddy. שיעור 34 מתוך 85.

transform.LookAt(point) מסובבת אובייקט כך שהציר הקדמי שלו, החץ הכחול של z, יצביע על מיקום בעולם. היא מסובבת את האובייקט ואינה מזיזה אותו. זרקור זה נמצא על מגדל בנקודה (0, 6, 0) ומכוון אל השער בנקודה (4, 0, 10):

void Start()
{
    transform.LookAt(new Vector3(4, 0, 10));
}

השער נמוך יותר מהאור, לכן הזרקור נוטה כלפי מטה תוך כדי סיבוב: LookAt מכוונת ישר אל הנקודה, כולל כלפי מעלה או מטה. לאחר מכן, transform.forward מצביע מהאור לכיוון השער.

כשקוראים לה מתוך Start(), ‏LookAt מכוונת פעם אחת. כשקוראים לה מתוך Update(), היא מכוונת שוב בכל פריים, כך שהאובייקט ממשיך לפנות אל הנקודה בזמן שהאובייקט או הנקודה זזים. הארגומנט שלה הוא תמיד מיקום: ‏LookAt(Vector3.forward) מכוונת אל הנקודה בעולם (0, 0, 1), מקום ליד מרכז העולם, בלי קשר למקום שבו נמצא האובייקט.

challenge icon

אתגר

בינוני

כוונו את הרובר כך שיפנה לכיוון הנסיעה שלו.

  1. מתחת להערה שב-Update(), כתבו if (move != Vector3.zero), כדי שרובר שעומד במקום ישמור על הכיוון שאליו הוא פונה.
  2. בתוך התנאי, קראו ל-transform.LookAt(transform.position + move);.

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

נסו בעצמכם

using UnityEngine;

public class Rover : MonoBehaviour
{
    public float speed = 3f;

    void Update()
    {
        Vector3 move = Vector3.zero;
        if (Input.GetKey(KeyCode.RightArrow)) move += Vector3.right;
        if (Input.GetKey(KeyCode.LeftArrow)) move += Vector3.left;
        if (Input.GetKey(KeyCode.UpArrow)) move += Vector3.forward;
        if (Input.GetKey(KeyCode.DownArrow)) move += Vector3.back;
        move = move.normalized;
        transform.position += move * speed * Time.deltaTime;
        // סובבו את הרובר כך שיפנה לכיוון שאליו הוא נוסע
    }
}

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

תרגלו בעצמכם: Unity אונליין