الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Xna And The Animations

بدأه hareega في 2 يوليو 2009 · 5 رد · 851 مشاهدة · في قسم برمجة الألعاب و الرسوميات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

:lol: السلام عليكم ورحة الله وبركاته

انا كنت ابحث عن دروس xna في مو ضوع animations فوجدت سايت يتحدث عنه لكن المشكله اني ما فهمت تمام :huh:

هل من اللمكن من احد الاخوان شرح هذا الموضوع :wub:

ومع الشكر الجزيل اخوكم ياسر.

وهذا الموقع http://www.xnafusion.com/?p=19 .

#2

و عليكم السلام و رحمة الله و بركاته

أرى أن الموضوع الموجود في الرابط موضح بشكل جيد ، هل هناك نقطة محددة تحب أن أوضحها لك؟؟ (الأفضل تحديد سؤالك)

#3

السلام عليكــم ورحمـة الله وبركاتــه ،،

timer += (float)gameTime.ElapsedGameTime.TotalMilliseconds;

if (timer > interval)

{

currentFrame++;

if (currentFrame > frameCount - 1)

{

currentFrame = 0;

}

timer = 0f;

}

sourceRect = new Rectangle(currentFrame * spriteWidth, 0, spriteWidth, spriteHeight);

}

sourceRect = new Rectangle(currentFrame * spriteWidth, 0, spriteWidth, spriteHeight);

ماهوعمله داخل الــ loop

تم تعديل هذه المشاركة بواسطة hareega في 2 يوليو 2009 في 14:26

#4

حسنا...

كما هو موضح في المقالة الأصلية

فإن الهدف هو عمل رسم متحرك للإنفجار، طريقة العمل

لدينا الصورة الموضحة في الأسفل تحتوي على 16 لقطة لهذا الإنفجار، الهدف إستغلال أحد أشكال الدالة spriteBatch.Draw() حيث يأخذ هذا الشكل الصورة أو ال Sprite و مربعين Source و Destination ، ال Source تمثل مربع في الصورة الخاصة بالإنفجار حيث سوف يتم رسمها في ال Destenation على الشاشة.

في البداية يكون مربع ال Source هو أول إطار من صورة الإنفجار و هو المربع الأحمر الأول في الصورة ، الهدف من السطر الذي تسأل عنه هو أن يقوم بالإنتقال إلى اللقطة التالية

من صورة الإنفجار بحيث يأخذ عرض الإطار * رقم الإطار . مثلا عرض الإطار = 64 * رقم الإطار الأول 0 == إذن الإطار الأول يبدأ من الإحداثي صفر في صورة الإنفجار

و عرض الإطار 64 * رقم الإطار الثاني 1 = 64 إذن الإطار الثاني يبدأ من إلإحداثي 64 (طبعا X) ، و كذلك الثالث و الرابع . طبعا إحداثي Y للجميع هو 0.

post-133895-1246537920_thumb.png

أرجو أن أكون قد وضحت الأمر

تقبل تحياتي :)

#5

وعليكــم السـلام ورحمة الله وبركاتـه..

مشكور اخوي وبصراحه ردك كان خفيف ومفيد

والمشكله كانت مني انا لاني من زمان وانا تعبان في الـــ loop

على العموم انا فهمت الفكره .

بس عندي استفسار بسيط لو تكرمت :

http://www.up-00.com/fqfiles/3Z649258.bmp

هل من نصائح او حتى لو فكره

عن كيفية ايقافه عند وضعيةالسكون و ايضا..............

http://www.up-00.com/fqfiles/mj750069.bmp

اريد فكره عن عرض animation جديد عند تغيير الحركه.

وشكرا .

تم تعديل هذه المشاركة بواسطة hareega في 2 يوليو 2009 في 18:53

#6

بالنسبة لعملية إيقافه (نفترض أنك تريد عرض الإطار الأول فقط أثناء السكون) فيمكن عملها بكل بساطه من خلال تعريف متغير int مثلا يمثل حالة اللاعب نفترض أن القيمة 0 تعني أن اللاعب اللآن ساكن، ثم تقوم في دالة ال Draw بوضع شرط قبل جملة الرسم . فتفحص إذا كانت قيمة متغير الحالة =0 تقوم برسم الإطار الأول (الإطار الأول و رقمه صفر) طبعا سوف تحتاج لأن تقوم بتعريف ال Source Rectangle مرة أخرى. و إذا كان متغير الحالة = قيمة غير الصفر يتم الرسم بالطريقة الطبيعية.

طبعا بالنسبة لمتغير الحالة يتم تغييره كإستجابة لضغط الأزار مثلا.

===========

ملاحظة جانبية: بإمكانك إستخدام ال enum في مثل هذه الحالة إذا كنت تعرف ماهي :).

===========

اقتباس
اريد فكره عن عرض animation جديد عند تغيير الحركه.

لم أفهم المقصود بالضبط ولكن بشكل عام إذا كنت تريد أن تعرض animation آخر بدلا من الحالي (مثلا حركة القفز بدلا من حركة المشي)

فبالإمكان عمل ذلك من خلال إستيراد الصورة الثانية في متغير آخر (طبعا يجب أن تراعي أن تكون مشابه للصورة الأولى نفس الحجم و عدد الإطارات) و عند دالة الرسم تقوم بعمل جملة شرطية لتفحص شرط معين إذا تحقق الشرط ترسم الصورة الثانية ، و إلا تقوم برسم الصورة الأولى.

أعلم أن إجاباتي عامه إلى حد ما، ولكن أرجو أن تكون مفيدة.

-------------------

بالمناسبة إذا لم تقرأ سلسلة الدروس الخاصة بال Xna أرجو منك قرائتها لأنها تحتوي على أفكارة كثيرة جدا قد تفيدك.

سلسلة دروس تعلم ال Xna 2D

بالتوفيق :)

مواضيع مشابهة