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

كيف اجعل مجسم يتبع الماوس (dx7 - vb)

مغلق
بدأه العالميه في 23 أكتوبر 2005 · 5 رد · 2,089 مشاهدة · في DirectX
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

السلام عليكم

انا اعمل على برمجة برنامج (3d)تعليمي

باستخدام (DirectX 7 ) ولغة (vb6 )

ارجو مساعدى بشرح طريقة كيف اجعل المجسم يتبع الماوس

مع العلم ان المجسم هو ملف (x )

السؤال الثاني:كيف اجعل الجسم يتحرك عند النقر عليه وليس عند النقر على الفورم؟

#2
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
mesh.X = X
mesh.Y = Y
End Sub

حيث mesh.x الاحداثي السيني للمجسم ,, وهذا على حسب الموجود عندك .. وحسب الطريقة اللي تستخدمها انت في معرفة الاحداثي السيني للمجسم ..

ونفس الامر mesh.y ...

لكن اذا كنت تقصد التتبع ... وليس ان يكون المجسم على الماوس ..

فالاخ احمد صالح ذكر الطريقة في احد المواضيع :

الفكرة :

اقتباس
تريد الشكل يتبع الماوس كلما تحرك ؟

هذه تسمي Tracking تتبع و تستخدم في الذكاء الصناعي

if ( Mouse_X > Object_X)
Object_X ++;  
if ( Mouse_X < Object_X)
  Object_X--; 
// On Y Axis 
if ( Mouse_Y > Object_Y)
 Object_y++;
if (Mouse_Y < Object_Y)
Object_y --;

يعني لو احادثي سيني للماوس زايد عن الكائن - زد إحداثي سيني للماوس

و لو إحداثي سيني للماوس اقل (اصغر منه عددياً ) - نقص من احادثي السيني للكائن ( يعني ابعده ) .

و كذلك علي الY .

بالنسبة لـ

:كيف اجعل الجسم يتحرك عند النقر عليه وليس عند النقر على الفورم؟

هنا يجب ان تعرف احداثيات الجسم

فتقول

انشأ shape وسمه مثلا mesh

ثم

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If X >= mesh.Left And X <= mesh.Left + mesh.Width And Y >= mesh.Top And Y <= mesh.Top + mesh.Height Then
Form1.Caption = "hi"
End If
End Sub

لاحظ ان الجهة اليمنى من الجسم غير معروفة هنا .. ولكن

mesh.right =mesh.left + mesh.width

اي ان الجهة اليمنى من الجسم تساوي الجهة اليسرى زائدا العرض .

الفكرة نفسها مع المجسم .. اهم شيء تعرف احداثيات كل جسم وطوله وعرضه

تم تعديل هذه المشاركة بواسطة الشمري في 23 أكتوبر 2005 في 15:10

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#3

مشكور الف شكر يا اخ الشمري

والله يعطيك العافيه

يا أخ الشمرى الطريق الاول لجعل الجسم يتبع الماوس غير مفيدة

وايش تقصد ب (حسب الطريقة اللي تستخدمها انت في معرفة الاحداثي السيني للمجسم .. )

اماالطريق اللي اسمها Tracking حق الاخ احمد صالح فهي بلغة ال ++c

وعفوا ارجومساعدتي بطريقه اخري

واذا كان بالامكان ترفق مثال يكون افضل

تم تعديل هذه المشاركة بواسطة العالميه في 24 أكتوبر 2005 في 00:19

#4

سأنزل مثال على vb لكن بدون dx لاني لا استخدمه .

وانت ايضا نزل المثال اذا كان صغير ...

انت هل تعرف احداثيات المجسم .... x .... لازم تكون تعرفه ....

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#5

احداثيات الجسم هي

الموقع

MeshFrame.SetPosition Nothing, 3, -3, 12

الحجم

Mesh.ScaleMesh 0.02, 0.02, 0.02

الدوران

MeshFrame.SetRotation Nothing, 0, 0, 0, 0

#6

المسألة سهلة .. ولاتحتاج الى كل هالشرح :)

عندك الدالة

MeshFrame.SetPosition Nothing, 3, -3, 12

هذه دالة الازاحة (التحريك) .,,, باقي الدوال ماعليك منها .

اولا اعلن عن ثلاث متغيرات (الافضل تكون ستاتيكية ) .. تحمل احداثيات الجسم .

مثلا

dim x As Integer
 dim y As Integer
dim z As Integer

الان تكتب

MeshFrame.SetPosition Nothing, x, y, z

الان انت تملك احداثيات الكائن ...

تستطيع ان تتحكم به .

اما احداثيات الفأرة .. فبما انك مبرمج vb فاكيد تعرف من اين تحصل عليها ..

اذا تحركت الفأرة ..

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

الان x و y هي احداثيات الفأرة

والامر نفسه مع الدالة التي تقع اذا نقرت على الفأرة

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

لتجعل المجسم بنفس احداثيات الفأرة .

dim x As Integer
 dim y As Integer
dim z As Integer


Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
meshX = X
meshY = Y
MeshFrame.SetPosition Nothing,meshX , meshY , 12

End Sub

طبعا طريقة تقريبة .. على حسب هيكلة برنامجك

انا ناسي الفيبي .... عشان كذا يمكن مايكون الشرح واضح ,

في المرفقات ثلاث امثلة

الاول

احداثيات المجسم = احداثيات الفارة

طريقة عادية

الثاني

المجسم يتبع الفارة(التتبع)

الثالث

الجسم يتحرك الى اليمين اذا نقرت عليه(اكتشاف التصادم)

طبعا بدلا من رسم مجسم ثري دي رسمت شكل عادي :) ,,, انت ماعليك الا تستبدل shape بالـmesh

alshammari.zip

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

هذا الموضوع مغلق.

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