כתיתב משחק שובר קירות ב JAVA - עמוד 2 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

כתיתב משחק שובר קירות ב JAVA


sharpsharp

Recommended Posts

לא התכוונת הפוך? בפגיעה בקיר אנכי המהירות האנכית מתהפכת והמהירות האופקית נשארת אותו הדבר.

בפגיעה בקיר אנכי (קיר בצורת | ) המהירות האופקית לא יכולה להישאר אותו הדבר, כי אז הכדור יעבור דרך הקיר. המהירות האופקית (ציר ה-X) הוא זו שמתהפכת.

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

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

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

קישור לתוכן
שתף באתרים אחרים

קודם כל תודה על התשובה.

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

בפעם הבאה הוא יכול לנוע 80 מעלות. ושוב צריך לשמור על זה.

עוד למשל אני מלחיט כמו שאמרת שהמהירות היא 10 אז כל 0.1 שניות הוא זז פיקסל 1 (1/10= 0.1) והמהירות בציר ה Y אותו הדבר אז הזויות תמיד תיהיה 45 מעלות.

איך בשיטה שאני קובע מהירות אנכית אופקית איך זה מסתדר? הרי הזוית תמיד אותו הדבר.

קישור לתוכן
שתף באתרים אחרים

שוב, אתה לא צריך לזכור זוויות, אלא רק את המהירות האופקית והמהירות האנכית. ברגע שקבעת זווית (כלומר, קבעת מהירות אופקית מסויימת ומהירות אנכית מסויימת), מה הבעיה לשמור עליה? על מנת לקבוע זווית של 90 מעלות, שים מהירות אופקית 0 ומהירות אנכית כלשהי. על מנת לקבוע זווית של בערך 60 מעלות, שים מהירות אופקית של 10 ומהירות אנכית של 20 (זה לא באמת 60, סתם זרקתי מספרים).

ולגבי השאלה השנייה - שוב, צריכות להיות לך שתי מהירויות - אופקית ואנכית.

קישור לתוכן
שתף באתרים אחרים

תודה הבנתי.

שאלה נוספת.

כשהכדור פוגע בלבנה היא אמורה להעלם.

חשבתי לעשות זאת כך.

לשמור מערך של לבנים שיש להם מיקום, אורך, רוחב, ומשתנה שמציין האם הלבנה פעילה או לא(isVisible).

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

כאשר אני מצייר רק את הלבנים ש isVisible הוא true.

כל פעם שהכדור זז אני צריך לעבור על כל המערך ולבדוק אם יש חיתוכים (על כל תזוזה קטנה של הכדור) . האם יש דרך יותר יעילה לעשות זאת?

זה נראה לי כל כך הרבה בדיקות על כל תזוזת כדור שנראה לי מוגזם.

אשמח לעצות

קישור לתוכן
שתף באתרים אחרים

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

קישור לתוכן
שתף באתרים אחרים

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

קישור לתוכן
שתף באתרים אחרים

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

לא הבנתי את כוונתך.

הרי הוקטור הוא באותו הגודל אך בזויות הפוכה (כלומר חזרה). אז מה יש לחשב ?

דרך אגב איפה הסטיקי?

וצריך לפרק את הוקטור (לציר X ו Y)? על מנת למקם את הכדור? (sin + cos)?

קישור לתוכן
שתף באתרים אחרים

זווית הפוכה = זווית החזרה למשיק בנקודת הפגיעה שלך שווה לזווית הכניסה למשיק.

זאת אומרת שיש כאן 2 פרמטרים -

זווית המשיק וזווית התנועה.

המקרה שאתה תיארת הוא שהמשיק הוא ניצב לקרקע או מקביל לה, והתנועה שלך היא ב- 45 מעלות. זוהי דוגמא ספציפית לתנועה, אך אם תרצה שתהיה מהירות שונה בכל ציר (=זוית תנועה שהיא לא 45 מעלות), ושהצורות שלך יהיו יותר מריבועים, תצטרך דרך טובה יותר לחשב את הזיות החדשה שלך.

תנסה לתאר מתמטית את הדרך בה תמצא את זוית היציאה, ותראה שזה לא כל כך פשוט.

ודיברתי על הסטיקי של "פונקציות שימושיות".

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...