
09-01-2008, 10:54
|
|
|
|
חבר מתאריך: 28.06.06
הודעות: 150
|
|
הדרך המסורתית ליצור תזוזה חלקה היא כמובן ע"י יצירת אנימציה מנק' X לנק' Y (ובמקרה הצורך מספר אנימציות עבור כל המקרים).
בשביל לבצע את זה, נקודות ההתחלה X ונקודות הסיום Y צריכות להיות מוגדרות מראש וקבועות.
במקרה הנוכחי, נק' הסיום קבועות, אבל הבעיה היא נק' ההתחלה הדינאמית. לכן, באמת צריך לחשוב על פתרון דרך קוד.
אני מאמין שהפסואדו-קוד הבא יניב את התוצאת הרצויות:
הגדרות:
y - ערך ה-y של chetz
destination - ערך ה-y של נק' הסיום
speed - המהירות הנוכחית של chetz
acceleratrion - התאוצה של chetz
maxSpeed - המהירות המקסימלית של chetz
כל פריים לבצע:
אם y קטן מ-destination
**להגדיל את y בכמות speed
אם לא ואם y גדול מ-destination
**להקטין את y בכמות speed
אם לא (y שווה ל-destination)
**להשוות את speed ל-0
אם speed קטן מ-maxSpeed
**להגדיל את speed בכמות acceleration
* הפסואדו-קוד לא יעבוד, כי תנאי העצירה לא נכון. זה ככה בכוונה בשביל הפשטות. אני מאמין שהכוונה ברורה, וזה העיקר כרגע.
תעבור על הפסואדו-קוד ותראה אם הוא מתאים למה שאתה מנסה ליצור.
אם לא, אני ממליץ בחום שתשנה אותו ו\או תכתוב אחד חדש שיתאים יותר לצרכים שלך.
אחרי שהפסואדו-קוד יפתור באופן תיאורטי את הבעיה, נעבור לקידוד עצמו.
שלבים נכונים בתכנות:
1. הגדרת הבעיה: מה אנחנו רוצים לעשות ? מה אנחנו צריכים לדעת ? מה אנחנו מצפים לקבל ?
2. פתרון הבעיה: כתיבת פסואדו-קוד.
3. כתיבת הקוד (ובזכות שיש לנו פסואדו-קוד, נוכל לכתוב אותו בכל שפה שנרצה)
עם הזמן, את שלב הביניים של כתיבת פסואדו-קוד אפשר לעשות בראש במקום לכתוב אותו על הנייר. הנסיון דואג לזה.
אבל אל תטעה - אתה עדיין יכול למצוא אותי יושב עם דף נייר ועפרון וכותב פסואדו-קוד בשביל לפתור בעיות מאוד מסובכות (ולא חסרות כאלו בתחום בניית המשחקים ).
|