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

تعال نبدأ مع Irrlicht على Net

رائج
بدأه DreamNet في 23 أغسطس 2007 · 109 رد · 19,552 مشاهدة · في قسم برمجة الألعاب و الرسوميات العام
مشاركة: واتساب X فيسبوك تيليجرام
#101
DreamNet كتب:
لا بدا أنك تستعمل الملف Irrlicht.NET.dll الموجود مع ملفات Dlls الذي أرفته في المشاركة الأولى وهو مرجع IrrlichtNETCP

post-23361-1198519727.jpg

لكي تعمل الأمثلة للموضوع الأول استعمل الملف الذي يأتي مع الSDK الرسمية للمحرك وهو Irrlicht.NET.dll مع المحافظة على الملفات الأخرى التي نحتاجها للتغليف

post-23361-1187880051.jpg

الكتكوووته كتب:
استاذ DreamNet الفاضل

انا مبتدأة .....................وحملت كل المتلطبات .........وسرت معك خطوة خطوة........لكن هناك خطاء يظهر من البداية عند استدعاء فضاء الاسماء

Imports Irrlicht

Imports Irrlicht.Video

Imports Irrlicht.Core

فما هي المشكله

ارجو الرد علي بعد إذنك

حدثت نفس المشكلة مع الأخ سيد

يمكنك تحميل المرجع الموجود هنا واستبداله بالسابق أي استبدال الملف Irrlicht.NET.dll

إعتذرا:

تم تعديل الملف الصحيح

للتحميل

Irrlicht.NET.zip

أنا أفضل أن تبدأ مع الموضوع الثاني أحسن لانه في نظري به يلم بجوانب الصوت والفيزياء أيضا

إطار جيد للتعامل مع Irrlichtcp رسم صوت وفيزياء معا, مقدمة لاستعمال IrrlichtFramework

تم تعديل هذه المشاركة بواسطة DreamNet في 15 ديسمبر 2008 في 22:21

#102

الله يجزيك بالخير اخي الفاضل DreamNet

طيب المشكلة الاولى مشينا فيها بفضل الله ثم بفضلك

طيب طلعت لي مشاكل ثانيه ....

d6407ac691.jpg

فالأولى عند وضع هذا الكود

  device = New IrrlichtDevice(DriverType.DIRECT3D9)

والخيارت الموجودة كانت

6b101fdba9.jpg

والثانية عند وضع الكود

  Dim box As ISceneNode = smgr.AddCubeSceneNo(10, Nothing, -1, New Vector3D(10, 5, 40))

والخيارت الموجوده ابداَ ما فيها شي عن مكعب Cube

طيب ليش؟؟

[c37c999bf2.jpg

المعذره ...ازعجك وكثرة اسألتي ....لكن بالفعل اريد ان اتعلم

ملاحظة اعمل على vb.net 2008

#104

شكرا اخي الفاضل مشي الحال .....لكن عند تشغيل

تظهر النافذة فارغة ليس بها صورة .............بعد إذنك.........هل من الممكن ان تشرح لي ان اضع الصورة التي انت سميتها "1.jpg"

هل اضعها في ملف Resources

بارك الله فيك ونفع بك

#105
DreamNet كتب:
ملاحظة :

طبعا علينا اضافة الصورة 1.jpg في نفس المجلد الموجود فيه الملف التنفيذي للمشروع يعني في bin\debug

post-23361-1187880051.jpg

بالتوفيق للجميع دائما

#106

اخي الفاضل...اشكرك على التفاعل السريع ومساعدتك اللأخرين

لكن اخي الفاضل قد جربت وضع الصورة في المجلد التنفيذي للبرنامج

ولم يحصل شيء

30da568ce8.jpg

وكذلك المثال الذي وضعته في البداية الذي اسمه tut3

وبالمثل طبقته ولم يعمل واعطاني خطاء

25d49e291d.jpg

مع العلم اني وضعت مجلد

irrlicht-1.3.1 في نفس المسار الذي وضعته انت

اخي الفاضل هل اكمل في تعلم هذه الطريقة لبرمجة الالعاب...ام تنصحني بالاتجاه الى برنامج

XNA GAme Studio Express

فهوا يتعامل مع vb.net

شكرا جزيلاً

تم تعديل هذه المشاركة بواسطة الكتكوووته في 16 ديسمبر 2008 في 19:11

#107

أولا :

عدم ظهور أي شئ في المثال الأول واضح من الخطأ الموجود في طريقة كتابة الكود

حيث أن الحلقة while تكون في بعد تعريف الكائنات التي سيتم رسمها وليس قبل

لذلك فانه لن يتم رسمها إلا اذا تم وضع التعريفات قبل تلك الحلقة

أي أنه من المفروض أن الحلقة while تكون آخر كود يكتب

ثانيا:

اذا كان الملف map20-kdm2.kp3 موجود بالفعل في المسار

d:\irrlicht-1.3.1\media\

يجب التحقق من ذلك أولا

اذا كان موجودا فأظن المشكل راجع إلى السماحية للفيستا والله أعلم (لم أجربها بعد على الفيستا)

لان الملف يتم فك ضغطه واستعمال المشهد الموجود به

يمكن مراجعة الموضوع الخاص ب UAC هنا

مع العلم أن الملف map20-kdm2.kp3 يمكن فك ضغطه يدويا بالوينرار والاستغناء عن السطر الموجود به الدلة AddZipFileArchive

ثالثا:

بالنسبة لتعلم الXNA فهي خيار جيد لكن الدعم مخصص للسي شارب أكثر من قبل ميكروسفت

وفي كل الأحوال فان التعلم سيفيد المبرمج بكسب خبرات تساعده في رفع مستواه

بالتوفيق

تم تعديل هذه المشاركة بواسطة DreamNet في 17 ديسمبر 2008 في 10:42

#108

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

أخي الكريم DreamNet إذا تكرمت علينا ممكن ترفع لنا الكود الخاص بالمثال shoot المذكور سابقا(يد مع مسدس يطلق نار مع صوت و نار و حركة)

مع إضافة تعديل بسيط عليه وهو أنه عندما تضغط على زر الفأرة يقوم المحرك بإنشاء كرة Sphere تنطلق من فم المسدس بإضافة قوة لها بإستخدام Newoton وإذا حدث Collison بين الكرة وبين AnimatedMesh محملة مسبقاً يتحرك الميش (لأنه لم يتجح معي كشف التصادم بين جسم و بين AnimatedMesh ولكنه نجح بين الكاميرا و بين الميش)

أعرف أن طلباتي كثيرة ولكن دعواتي لك ستكون أكثر بإذن الله

ملاحظة : أنا الآن أقوم بتصميم لعبة تشبه لعبة BeachHead القديمة ولدي صديقي في فريق العمل يصمم لي الأعداء و الهيلوكبتر و الدبابات و APC و طائرات F16 كما أنني سوف أستعين بالMaterials الخاصة بلعبة (Counter Strike) إييييييييييه الله يرحم أيام زمان :lol:

وأكيد يشرفني أن تكون معي بالمشروع على كل حال سأقوم بفتح ورشة جديدة عند إنتهاء صديقي من المواد و عند إتقاني الكامل للمحرك الخارق irrlicht

وشكراً لك مسبقاً... :ty: :rose:

:bye:

أعوذ بالله من الشيطان الرجيم

قل إنّ صلاتي و نسكي و محيّاي و مماتي لله رب العالمين

صدق الله العظيم

#109
اقتباس
مع إضافة تعديل بسيط عليه وهو أنه عندما تضغط على زر الفأرة يقوم المحرك بإنشاء كرة Sphere تنطلق من فم المسدس بإضافة قوة لها بإستخدام Newoton وإذا حدث Collison بين الكرة وبين AnimatedMesh محملة مسبقاً يتحرك الميش (لأنه لم يتجح معي كشف التصادم بين جسم و بين AnimatedMesh ولكنه نجح بين الكاميرا و بين الميش)

ملاحظة بسيطة فقط حول الطريقة التي تريد تطبيقها

تغليف محرك نيوتن حاليا غير كامل ولذلك فالدالة المخصصة للAnimatedMesh غير متوفرة في IrrlichtFramework

وبهذا فأنه يستحسن استعمال Sphere تربط مع الAnimatedMesh من أجل كشف التصادم

لكن سيؤدي في الأخير جعل رمي الرصاص واستخدام نيوتن لكشف التصادم إلى ثقل كبير في اللعبة

لذلك عليك التفكير فقط في استعمال دوال التصادم الموجودة ضمن محرك الرسوم لاكتشاف تصادم شعاع مع الAnimatedMesh

سأحاول البحث داخل ملفاتي القديمة عن سورس المثال مع أنه يمكنك استخلاص السورس ببساطة باستعمال برنامج Reflactor

مع أني أشك أنني سأجد المثال لكنه ليس صعب اعادة كتابته

أظنك تستعمل المكتبة IrrlichtFramework أليس كذلك؟

#110

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

شكراً لك على فكرة Reflector

هذا هو الكود :

Public Shared Sub Main()
	  Module1.device = New IrrlichtDevice(DriverType.OPENGL)
	  Dim driver1 As IVideoDriver = Module1.device.VideoDriver
	  Dim manager1 As ISceneManager = Module1.device.SceneManager
	  Dim receiver1 As New MyEventReceiver
	  Module1.device.EventReceiver = receiver1
	  Dim material1 As New Material
	  material1.Texture1 = driver1.GetTexture((Module1.path & "rockwall.bmp"))
	  Dim df1 As New Dimension2Df(30!, 30!)
	  Dim dimensiond1 As New Dimension2D(40, 40)
	  Dim df2 As New Dimension2Df(0!, 0!)
	  Dim df3 As New Dimension2Df(10!, 10!)
	  Dim mesh1 As IAnimatedMesh = manager1.AddHillPlaneMesh("myHill", df1, dimensiond1, material1, 5!, df2, df3)
	  manager1.AddMeshSceneNode(mesh1.GetMesh(0), Nothing, -1).SetMaterialFlag(MaterialFlag.LIGHTING, False)
	  Dim node1 As ICameraSceneNode = manager1.AddCameraSceneNodeFPS
	  Dim vectord1 As New Vector3D(0!, 50!, -70!)
	  node1.Position = vectord1
	  Module1.device.FileSystem.AddZipFileArchive("deagle.zip")
	  Module1.gun = manager1.AddAnimatedMeshSceneNode(manager1.GetMesh("deagle.ms3d"), node1, -1)
	  Module1.gun.SetMaterialFlag(MaterialFlag.LIGHTING, False)
	  Module1.gun.AnimationSpeed = 3000!
	  Module1.gun.SetFrameLoop(0, 0)
	  Module1.device.CursorControl.Visible = False
	  Dim positiond1 As New Position2D(320, 240)
	  Module1.device.GUIEnvironment.AddImage(driver1.GetTexture("crosshair.tga"), positiond1, True, Nothing, 0, "test")
	  Do While Module1.device.Run
			Dim color1 As New Color(255, 100, 100, 100)
			driver1.BeginScene(True, True, color1)
			manager1.DrawAll
			Module1.device.GUIEnvironment.DrawAll
			If (Module1.gun.CurrentFrame > 1200) Then
				  Module1.gun.SetFrameLoop(0, 0)
				  Module1.shooting = True
			End If
			driver1.EndScene
	  Loop
End Sub

وهذا هو مستقبل الأحداث:

Public Class MyEventReceiver
	  Implements IEventReceiver

	  ' Methods
	  Public Sub New()
	  Public Function OnEvent(ByVal e As Event) As Boolean Implements IEventReceiver.OnEvent
	  Public Sub Shoot()

	  ' Fields
	  Private osound As ISoundEngine
End Class

وهذا هو الميثود Shoot:

Public Sub Shoot()
	  Module1.shooting = False
	  Module1.gun.SetFrameLoop(200, 1290)
	  Me.osound.Play2D("deagle1.wav", False, False, StreamMode.AutoDetect, False)
	  Dim node1 As IBillboardSceneNode = Nothing
	  Dim df1 As New Dimension2Df(5!, 5!)
	  Dim vectord1 As New Vector3D(0!, 0!, 0!)
	  node1 = Module1.device.SceneManager.AddBillboardSceneNode(Module1.gun, df1, vectord1, -1)
	  node1.SetMaterialFlag(MaterialFlag.LIGHTING, False)
	  node1.SetMaterialType(MaterialType.TRANSPARENT_ADD_COLOR)
	  node1.SetMaterialTexture(0, Module1.device.VideoDriver.GetTexture("flash.bmp"))
	  vectord1 = New Vector3D(4!, -0.5!, 16!)
	  node1.Position = vectord1
	  Dim animator1 As ISceneNodeAnimator = Module1.device.SceneManager.CreateDeleteAnimator(50)
	  node1.AddAnimator(animator1)
End Sub

بالنسبة للتصادم بين الطلقة (Sphere) و الميش أحاول إيجاد حل أرجوا من الجميع مد يد العون

اقتباس
أظنك تستعمل المكتبة IrrlichtFramework أليس كذلك؟

نعم أستخدم الIrrlichtFramework لهذا عندما كنت أحاول تطبيق الدروس الموجودة في هذا الكورس كنت أجد صعوبة وكنت أضطر أحيانا إلى التجريب لمدة ساعات لينجح المثال (إكتشفت AddHandler عوضاً عن EventReceiver لوحدي )

على العموم شكراً جزيلاً لك مرة أخرى.

أعوذ بالله من الشيطان الرجيم

قل إنّ صلاتي و نسكي و محيّاي و مماتي لله رب العالمين

صدق الله العظيم

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