כיצד ליצור משחק פונג - hyperPong

Note: קובץ פרויקט שלם להדרכה זו ניתן למצוא בסוף מאמר זה.
מבוא
בהדרכה זו, ניצור משחק דמוי פונג מהיסוד. נכסה כמה תכונות והתנהגויות מתקדמות יותר ב-hyperPad, כך שההדרכה הזאת מניחה שיש לכם ידע בסיסי עם עורך ה-hyperPad. אם אתם חושבים שאתם צריכים להכיר את אופן יצירת המשחק מהבסיס, אתם יכולים לבדוק קודם את המדריך המלא - יצירת משחק פלטפורמה ראשון.
פונג הוא משחק פשוט לשני שחקנים שמורכב משני מחבטים ובעל, וניתן לחשוב עליו כעל גרסה דיגיטלית פשוטה של טניס שולחן. כל שחקן שולט במחבט, שניהם בצדדים נגדיים של השולחן. המחבטים יכולים לזוז קדימה ואחורה בלבד, מכים את הכדור לעבר השחקן הנגדי. אם שחקן מפספס את הכדור, השחקן השני מרוויח נקודה. השחקן הראשון שמגיע ל-11 נקודות מנצח!
למשחק הפונג שלנו, נכלול את האפשרות לשחק במצב של שחקן אחד (שחקן נגד AI), במצב של שחקן 2 (שחקן נגד שחקן), או במצב של 0 שחקנים "צפה" (AI נגד AI).
חלק 1: הגדרת הפרויקט ותפריט ראשי
בואו נתחיל ביצירת פרויקט חדש.
פתחו את תפריט הפרויקטים ב-hyperPad ולחצו על פרויקט חדש. תנו לפרויקט שלכם שם ולחצו על הבא. הכיוונים יכולים להישאר על מצב נוף ברירת מחדל. עבור ההדרכה הזו, תמיכת מכשירים מוגדרת ל-iPad 4:3. במסך הבא, בחרו "נוף עיני הציפור" והשאירו את השאר כברירת מחדל.
עכשיו שיש לנו פרויקט חדש שיכול להתחיל, נתחיל במהרה להקים תפריט ראשי לפני שנקפוץ ישירות אל המשחק עצמו. הדבר הראשון שנעשה זה לשנות את שם הסצנה שלנו ל"תפריט ראשי".
הקישו על כפתור תפריט הפרויקט/סצנה ולחצו על כפתור הגיר ליד "סצנה 1" שלנו.
הקישו על אפשרות ההגדרות ושנו את שם הסצנה ל"תפריט ראשי". הקישו על שמירה כדי לשמור ולסגור את חלון ההגדרות.
לאחר מכן, כדי להישאר נאמנים למשחקים רטרו מוקדמים כמו פונג של האצטדיון, נוכל לשנות את צבע הרקע לשחור.
הקישו על כפתור הגדרות הסצנה ובחרו רקע. הקישו על כפתור "שנה צבע" ושנו אותו לשחור (#000000FF).
עכשיו נוסיף תווית כותרת לתפריט הראשי שלנו. הקישו על כפתור האובייקטים המיוחדים ובחרו בתווית.
הקישו על לשדה הטקסט והקלידו את שם המשחק שלכם ("hyperPong" הוקלד להדרכה זו), קבעו את גודל הפונט למשהו גדול אך לא גדול מדי. עבור כותרת "hyperPong", 72 נקודות זה גודל טוב. שנו את הצבע ללבן (#FFFFFFFF) והצבו אותו במרכז התפריט בקרבת החלק העליון.
עכשיו יש לנו סצנת תפריט ראשי למלא בכפתורים של כל מצבי המשחק שלנו. נעזוב את התפריט כפי שהוא לעת עתה, ונשלים אותו לאחר שיהיה לנו משחק נגיש.
חלק 2: הגדרת סצנת המשחק והמחבט
הקישו על כפתור תפריט הפרויקט והקישו על "הוסף סצנה". תנו לה שם "משחק" והקישו על צור. כעת בסצנת המשחק, אתם צריכים לראות קנבס ריק. כמו שעשינו עם סצנת תפריט ראשי, עבורו הקישו שוב על כפתור הגדרות הסצנה ושנו את הרקע לשחור (#000000FF).
בואו נתחיל ליצור את המחבטים של השחקן שלנו. צרו אובייקט ריק על ידי מעבר לכפתור האובייקטים המיוחדים ובחרו ב"אובייקט ריק". שנו את צבעו ללבן (#FFFFFFFF) ודאגו שהמחוון של שקיפות יהיה מלא.
שנו את השם לאובייקט ל"שחקן-1" והגדרו את מצב הפיזיקה שלו לפיזיקה, והשאירו את "עביר" מופרד.
הסיבה שנשאיר את "עביר" מופרד היא כך שיהיה לנו שליטה טובה יותר על איך הכדור ייתקל במחבט כשי hits. נרצה להיות מסוגלים לשלוט במהירות ובכיוון שהכדור הולך באופן ידני.
במאפייני האובייקט "שחקן-1", עבורו ללשונית ״שינוי״ והגדירו את הסקלה X ל-25% והעבירו אותו שמאלה של שדה המשחק.
לאחר מכן, נוסיף כמה שלטים למחבט שלנו כך שהוא יוכל לזוז. עם המחבט שנבחר, יש לגלוש לעורך ההתנהגות שלו על ידי חזרה ללשונית הפיזיקה.
הניחו התנהגות ג'ויסטיק אנלוגי, שנמצאת תחת הסקסיה של האינטראקציה (אם אינכם מצליחים למצוא אותה, עליכם להקיש על הלשונית המתקדמת). זה ייצור באופן אוטומטי ג'ויסטיק עבורכם בעורך הסצנה.
אבל אנחנו לא רוצים להרשות למחבט לזוז רק על ידי תנועת הג'ויסטיק. אנו רוצים גם שזה יוכל להניע תנועות, גם.
מתחת לסקסיה מותאמת אישית, הניחו קופסת אירוח. זה ישמור את הכיוון שהמחבט יזוז. על ידי כך, גם שחקן ששולח ג'ויסטיק וגם AI שמעושים חישובים יכולים לזוז על ידי שינוי ערך זה. הערך המוחלט אמור להיות מוגדר ל-0. זה גם רעיון טוב לתת לו שם טוב כך שזה יהיה קל יותר לעבוד איתו, "כיוון תזוזה" זה נשמע מתאים.
עם קופסת האירוח שנבחרה, לחצו על כפתור "שנה שדה קלט" והקישו על כן. זה ייצור התנהגות של "קבע שדה קלט" לקופסה כך שנוכל לשנות את הערך שלה כאשר אנו זקוקים לכך. חברו את קבע שדה קלט לג'ויסטיק האנלוגי.
עם הערכת קבע שדה קלט שנבחרה, הניחו את ערך הפלט מהג'ויסטיק האנלוגי לתוך שדה ערך החדש. בחרו את המאפיין "y". עכשיו, קופסת כיוון התנועה תעקוב אחרי כמה רחוק השחקן יזוז את הג'ויסטיק למעלה או למטה (ציר y).
עכשיו כשאנחנו עוקבים אחרי כמה רחוק הג'ויסטיק זז למעלה או למטה, אנחנו גם צריכים לאפס אותו לאפס אם השחקן משחרר את הג'ויסטיק. אחרת, המחבט ימשיך לזוז לכיוון שהוא זוכר לאחרונה.
מתחת לסקטורסיה של האינטראקציה, הוסיפו התנהגות של אינטראקציה שהופסקה, ולחצו עליה כדי לפתוח את המאפיינים שלה. כברירת מחדל היא עוקבת אחרי מתי השחקן מפסיק לגעת במחבט, אבל אנחנו רוצים לעקוב אחרי מתי השחקן מפסיק לגעת בג'ויסטיק.
הקישו על המאפיין שלך כדי לשנות אותו, ובחרו את הג'ויסטיק. ייתכן שתצטרכו לבחור בשכבת UI העולמית כדי שתוכלו לבחור אותו. כשזה נבחר, הקישו על כפתור הבדיקה. ההתנהגות עכשיו תציים את הג'ויסטיק כאוביקט נעקבו.
הקישו על קבע שדה קלט שעשינו קודם והכפילו אותה. עם החיקוי של קבע שדה קלט, חברו אותו להתנהגות ההפסקה שנחזית והגדירו את המאפיין החדש שלה ל-0.
עכשיו המשתנה של קופסת כיוון התנועה שלנו יעקוב אחרי תנועות למעלה ולמטה של הג'ויסטик ויאפס את עצמו ל-0 כאשר הג'ויסטיק משתחרר. זה נותן לנו דרך מצוינת להגיד למחבט איך לזוז, אז בואו נמשיך וניתן למחבט שלנו תנועה.
מתחת לסקטורסיה מותאמת אישית, הניחו התנהגות של טיימר. במאפיינים שלה, קבעו את המרווח ל-0. טיימר זה יבוצע פעמים ככל שהוא יכול (פעם פר מסגרת), שזו הזדמנות לעדכן את תנועת המחבט בתדירות גבוהה מאוד.
לפני שנגדיר את מהירות המחבט, נרצה לוודא שהערך עבור קופסת כיוון התנועה נמצא בטווח סביר, רק במקרה והוא נע גבוה מדי או נמוך מדי. אחרת, המחבט ינוע מהר מדי במקרים מסוימים.
מתחת לסקטורסיה של הלוגיקה, הניחו התנהגות מינימלית והתנהגות מקסימלית. חברו את ההתנהגות מינימלית לטיימר, ואת ההתנהגות מקסימלית למינימלית. אתם צריכים לקבל משהו שיראה כך:
במאפייני ההתנהגות המינימלית, קבעו את הערך הראשון לערך הפלט של התנהגות הכיוון והערך השני להיות 1.
התנהגות המינימלית תיתן פלט של המספר הקטן ביותר שהיא מקבלת. אז, אם הערך של כיוון התנועה גדול מ-1, היא תנפיק 1. אחרת, היא פשוט תפקד את הערך עבור כיוון התנועה.
במאפייני ההתנהגות המקסימלית, קבעו את הערך הראשון לתוצאה של מינימום, והערך השני ל-1-.
התנהגות המקסימלית תיתן פלט של המספר הגדול ביותר שהיא מקבלת. כך, אם הערך של כיוון התנועה קטן מ-1-, היא תנפיק 1-. אחרת, היא תפיק את הערך של מינימום (שהוא או 1- או כיוון התנועה, מה שיותר נמוך).
מה שכל זה אומר, זה שהתוצאה של מקסימום היא למעשה הערך של כיוון התנועה מקובע בין -1 ל-+1. זה נותן לנו שליטה מלאה על כמה מהר המחבט יכול לנוע אולי!
טווח בין -1 ל-+1 זה קל לעבוד איתו, אבל יהיה איטי מדי אם נשתמש בזה ישירות כמהירות המחבט.
מתחת לסקטורסיה של הלוגיקה שוב, הניחו התנהגות של הכפל בערכים וחברו אותו להתנהגות מקסימלית. עבור הערך הראשון, קבעו את התוצאה של ההתנהגות מקסימלית. עבור הערך השני, נוכל לקבוע ערך

