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

בין אם אתה חדש בקידוד או שיש לך קצת ניסיון מתחת לחגורה, מדריך C# זה יעמיד אותך על הרגליים ואת הדמויות שלך על רגליהם.

בואו נתחיל.

תנועת שחקן באחדות: איסוף תשומות

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

כאשר Unity פתוחה, לחץ על לַעֲרוֹך בסרגל הכלים העליון. כעת בחר הגדרות פרויקט. מהרשימה השמאלית, בחר מנהל קלט. בחר צירים, מאכלסת את רשימת ערכי הקלט. אתה תרצה להסתכל על אופקי ו אֲנָכִי לתנועה בסיסית.

אתה תשתמש בצירים אלה יחד עם קֶלֶט. GetAxisRaw(); לתנועה בסיסית בסעיף הבא.

תנועת שחקן באחדות באמצעות גוף קשיח ומנגח

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

בפרויקט האחדות שלך הִיֵרַרכִיָה הצג, לחץ לחיצה ימנית ובחר אובייקט תלת מימד > קפסולה כדי ליצור את מה שתעניק לו תנועה. הקפד להשתמש באותה טקטיקה כדי ליצור קרקע מָטוֹס לקפסולה שלך לעמוד עליה.

instagram viewer

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

קָשׁוּר: 5 השפות לפיתוח משחקי Unity: מה כדאי ללמוד?

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

לאחר מכן, לחץ לחיצה ימנית על שלך תסריטים תיקיה ו לִיצוֹר חדש סקריפט C#. תן שם לתסריט הזה משהו בסגנון "PlayerMovement". אם אתה מתכנן להוסיף מספר סוגי תנועה עבור דמויות או סוגי בקר שונים, תרצה ליצור סקריפטים רבים ושונים עבור כל סוג תנועה. לעת עתה, נתמקד ביסודות ונשתמש בסקריפט אחד.

ראה גם: מהו תכנות מודולרי ב-Unity ומדוע זה חשוב?

לחץ פעמיים על הסקריפט שלך כדי לפתוח אותו. תיתקל בסקריפט Unity המוגדר כברירת מחדל:

באמצעות מערכת. אוספים;
באמצעות מערכת. אוספים. גנרית;
באמצעות UnityEngine;
בכיתה ציבורית תנועת שחקן: מונו-התנהגות
{
// Start נקרא לפני עדכון המסגרת הראשון
void Start()
{

}
// עדכון נקרא פעם אחת בכל מסגרת
void Update()
{

}
}

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

עם זה מחוץ לדרך, התמקד

מחלקה ציבורית PlayerMovement: MonoBehaviour {

לעת עתה. בתוך הפלטה המתולתלת הפתיחה, צור א ציפה ציבורית משתנה בשם מְהִירוּת או משהו דומה. זֶה מְהִירוּת משתנה הוא מכפיל שישלוט באיזו מהירות שלנו שחקן מהלכים לאחר עוד קצת תכנות. לעת עתה, הגדר מְהִירוּת שווה למשהו כמו 10f.

אתה גם צריך לתת ל-Unity שיש Rigidbody לתפעל בתסריט הזה. זה נעשה עם מילת המפתח גוף קשיח ושם משתנה — אנחנו נבחר rb.

בכיתה ציבורית תנועת שחקן: מונו-התנהגות
{
מהירות ציפה ציבורית = 10f; //שולט במכפיל המהירות

Rigidbody rb; //אומר לסקריפט שישנו גוף קשיח, נוכל להשתמש במשתנה rb כדי להפנות אליו בסקריפט נוסף

זה כל מה שאתה צריך להוסיף בסעיף זה. עכשיו, עברו ל void Start(). עם תחילת המשחק, עליך להגדיר את rb משתנה שווה ל- גוף קשיח על שחקן ככה:

void Start()
{
rb = GetComponent(); //rb שווה לגוף הנוקשה על השחקן
}

עכשיו, תסתכל על void Update() פוּנקצִיָה. זו הפונקציה שבה תשתמש כדי לתפוס כל הזמן קלט מהמקלדות, הבקרים וכו' של השחקנים. זכור מתי בדקת את הגדרות פרויקט ל צירי קלט? אתה תשתמש בהם כאן.

void Update()
{
float xMove = קלט. GetAxisRaw("Horizontal"); // d key משנה ערך ל-1, מפתח משנה ערך ל-1
float zMove = קלט. GetAxisRaw("Vertical"); // מקש w משנה את הערך ל-1, מפתח s משנה את הערך ל-1
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * מהירות; // יוצר מהירות בכיוון הערך השווה ללחיצת מקש (WASD). rb.velocity.y עוסק בנפילה + קפיצה על ידי הגדרת המהירות ל-y.

}

אל תדאג אם אתה מרגיש המום בקפיצת הקוד; נסביר זאת שלב אחר שלב. ראשית, צור א לָצוּף משתנה עם שם כמו xMove, והגדר אותו שווה ל קֶלֶט. GetAxisRaw("Horizontal");

קֶלֶט. GetAxisRaw(); היא הדרך של Unity להקליט את כניסות הנגן מה- צירים מצאת ב הגדרות פרויקט. אתה יכול לקרוא עוד על זה ב התיעוד הרשמי של Unity. "אופקי" מגיע מה ציר אופקי שם באחדות. ציר זה שולט בתנועה שמאלה וימינה באמצעות המקשים "a" ו-"d".

כפי שאתם בטח יכולים לנחש עד עכשיו, float zMove = קלט. GetAxisRaw("Vertical"); עושה את אותו הדבר מלבד המקשים "w" ו-"s".

קָשׁוּר: מדריכי Unity 3D הטובים ביותר למתחילים

לאחר מכן, תשים את זה מְהִירוּת משתנה שיצרת למשחק והשלם את החלק האחרון של הפאזל לתנועת שחקן ב-Unity.

rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * מהירות; // יוצר מהירות בכיוון הערך השווה ללחיצת מקש (WASD). rb.velocity.y עוסק בנפילה + קפיצה על ידי הגדרת המהירות ל-y.

חזור בחזרה ל-Unity's מְפַקֵחַ תצוגה עבור שחקן לְהִתְנַגֵד. תסתכל על גוף קשיח-תַחַת מידע, תראה ערך מְהִירוּת. זה הערך שאליו אתה מכוון rb.מהירות.

new Vector3(xMove, rb.velocity.y, zMove) * מהירות, יוצר וקטור חדש עם ערכי x, y ו-z שסופקו, ואז מכפיל את הערך של הווקטור ב מְהִירוּת.

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

הנה הקוד המוגמר:

באמצעות UnityEngine;
בכיתה ציבורית תנועת שחקן: מונו-התנהגות
{
מהירות ציפה ציבורית = 10f; //שולט במכפיל המהירות
Rigidbody rb; //אומר לסקריפט שישנו גוף קשיח, נוכל להשתמש במשתנה rb כדי להפנות אליו בסקריפט נוסף

// Start נקרא לפני עדכון המסגרת הראשון
void Start()
{
rb = GetComponent(); //rb שווה לגוף הנוקשה על השחקן
}

// עדכון נקרא פעם אחת בכל מסגרת
void Update()
{
float xMove = קלט. GetAxisRaw("Horizontal"); // d key משנה ערך ל-1, מפתח משנה ערך ל-1
float zMove = קלט. GetAxisRaw("Vertical"); // מקש w משנה את הערך ל-1, מפתח s משנה את הערך ל-1
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * מהירות; // יוצר מהירות בכיוון הערך השווה ללחיצת מקש (WASD). rb.velocity.y עוסק בנפילה + קפיצה על ידי הגדרת המהירות ל-y.

}
}

פתק: אם אתה מוצא את הדמות שלך מתרוצצת יותר מכל דבר אחר, הקפד לנעול את הסיבוב של השחקן ב- מְפַקֵחַ.

למד ועשה עוד באחדות

עכשיו כשאתה יודע לתכנת תנועת נגן ב-Unity עם רכיבי Rigidbody ו-Colider, מה תלמד אחר כך? אולי הרחבת בקר התנועה שלך כדי להוסיף דברים כמו החלקה, קפיצה כפולה ועוד יוכיח את עצמה מבדרת ומרתקת.

Unity Learn עמוסה בנושאים מעניינים לקידום כישורי פיתוח המשחקים שלך. אנו מאמינים שאחד הגורמים החשובים ביותר בהרחבת הידע שלך בתכנות הוא ללמוד משהו חדש בכל יום. הישאר סקרן והאקינג שמח!

Unity Learn היא הדרך הקלה ביותר להשתלט על פיתוח משחקים

רוצה להתחיל לפתח משחקים משלך? Unity Learn היא הדרך הטובה והקלה ביותר ללמוד ולשלוט במה שאתה צריך לדעת.

קרא הבא

לַחֲלוֹקצִיוּץאימייל
נושאים קשורים
  • תִכנוּת
  • פיתוח משחק
  • אַחְדוּת
  • תִכנוּת
על הסופר
מרקוס מירס השלישי (30 מאמרים שפורסמו)

מרקוס הוא עיתונאי טכנולוגי עצמאי ועורך ג'וניור לתכנות ב-MUO. הוא לומד לכל החיים, מפתח חזיתי חובב וכותב סיפורים קצרים עם ניסיון של 3+ שנים בפיתוח פרוזה שמעדכנת את הקוראים.

עוד מ-Marcus Mears III

הירשם לניוזלטר שלנו

הצטרף לניוזלטר שלנו לקבלת טיפים טכניים, ביקורות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!

לחץ כאן כדי להירשם