29-07-2009, 09:55
|
|
|
חבר מתאריך: 29.09.07
הודעות: 136
|
|
בדיקת מגע
אוקיי אני יודע שצריך להשתמש בhitTest אבל הבעיה היא כזאת: כשעיגול נוגע בעיגול הhitTest פועל כבר כשהוא נוגע בריבוע החוסם את העיגול - בגבולות (נראה לי בגלל שפלאש עובד על וקטור ולא על פיקסלי) אני רוצה דרך יעילה שתבדוק האם הם נוגעים אחד בשני (לאו דוקא עיגולים אלא קווים מסולסלים/ בעלי שיפוע וכו') ראיתי קוד כזה:
קוד:
collision=false;
for(i=1+_root.mc1._y;i<_root.mc1._height+mc1._y;i++)
for(j=1+_root.mc1._x;j<_root.mc1._width+mc1._x;j++)
if(_root.mc1.hitTest(j,i,true)&&_root.mc2.hitTest(j,i,true))
collision=true;
if(collision)
trace("a collision has acured");
else
trace("a collision has not acured");
הרצתי אותו באינטרוול הבעיה היא שהוא כבד ממש (וגם משום מה לא הצלחתי להפעיל אותו תחת הנדלר) וזה ניהיה ממש איטי אני גם יודע שיש דרך לעשות את זה דרך BitmapData אני רק לא ממש מבין איך (העיקרון הוא ליצור BitmapData שקוף סביב המובי קליפ אני רק לא יודע איך! ואז לבדוק אם הם נוגעים (ואז זה יהיה כמו פיקסלי) )
ניסתי לעשות את הקוד פחות איטי אבל גם זה די מעפן:
קוד:
if (_root.mc1.hitTest(_root.mc2)){
collision=false;
for(i=1+_root.mc1._y;i<_root.mc1._height+mc1._y;i++)
for(j=1+_root.mc1._x;j<_root.mc1._width+mc1._x;j++)
if(_root.mc1.hitTest(j,i,true)&&_root.mc2.hitTest(j,i,true))
collision=true;
if(collision)
trace("a collision has acured");
else
trace("a collision has not acured");
}
_____________________________________
"ואני אומר - ששנים דרושים למשחק!"
|