עבור לתוכן

Java סיבוב תמונה

Featured Replies

פורסם

שלום לכולם

נתקלתי בבעיה קטנה כשניסית ליצור תמונה של טנק מסתובב על אדמה

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

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

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

מישהו יכול לעזור?

  • 2 שבועות מאוחר יותר...
פורסם

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

פורסם

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

למה שלא יעשה רקע שקוף לטנק?

פורסם

אכן, הפתרון המומלץ הוא לשמור את קובץ הטנק בפורמט שמאפשר שקיפות (לדוגמה png) ולצייר אותו באופן שיודע להתייחס לשקיפות הזו.

איך בדיוק אתה מצייר את הטנק? עם איזה אובייקטים/פונקציות?

פורסם

למה שלא יעשה רקע שקוף לטנק?

כי זה הפתרון הכי פשוט (לדעתי).

פורסם

ומה אם רוצים שהמשחק יהיה קצת יותר איכותי?

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

(מצטרף לשאלה שלו בקיצור..)

פורסם

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

קודם כל, חייב שקיפות, אחרת צריך:

(level_width - sprite_width) * (level_height - spite_height)

תמונות, וזה הרבה!

בתכלס, יש 2 פתרונות, תלוי בסוג הספרייה:

אם אתה משתמש בספרייה סטייל 1995 ( תחשוב SDL, allegro וכו'... ), הטריק הוא לרנדר לתוך surface (באפר בזיכרון) כלשהו

אחרי שאתה מעביר את הביטים דרך אלגוריתם סיבוב כלשהו, ואז פשוט לעשות blit לתוך ה surface שמייצג את המסך.

עכשיו בגלל שכל זה נעשה על ה CPU, והשנה היא 1995, לרוב כשטוענים את השלב, יוצרים בין 360-1 כאלה (תלוי כמובן בכמה זוויות

הטנק יסתובב) ושומרים אותם במערך.

יש ספריות מתוכמות יותר כמו java2D, ה GraphicsScene של QT או כל ספריית D2\3D שמשתמשת בהאצה תלת מימדית,

שמספקות לך transform matrix (עוד מידע פה). ואז אתה פשוט יכול לשנות ערכים, לרוב יש לך פונקיות עזר, בקוד זה בערך נראה ככה:



painter.transform().rotate(angle)
painter.drawImage(tankSprite)

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

זהו, מקווה שזה ברור יותר עכשיו :) (כי ביזבזתי הפסקת קפה וחצי על הפוסט הזה!)

ארכיון

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

דיונים חדשים