iran_adventure مدیر انجمن
تاريخ عضويت: شنبه 4 آذر 1385 تعداد ارسالها: 2069 محل سكونت: تهران
3 شنبه 21 فروردين 1386 - 23:30 |
|
|
ممنون احسان .
ببینید من برای حرکت توپ ( اینجا توپ 1 ) از کد زیر استفاده کردم که Pow قدرت هست و مقدار شتاب رو تایین می کنه و Jahat که جهت توپ رو مشخص می کنه و T1 هم اینجا آبجکت توپ اول هست اون Sleep هم فاصله زمانی بین هر فریم رو مشخص می کنه که الان 20 میلی ثانیه هست ...
كد: |
for(var X=Pow; X>0 ; X = X - 3)
{
T01.SkipTo(T01.X + X*Math.Cos(Jahat), T01.Y + X*Math.Sin(Jahat));
Sleep(20);
} |
این کد هم مربوط به سنجش فاصله هست که اگه فاصله کمتر از مقدار مشخص شده بشه ( جذر 625 ) بشه Lose_C برابر 1 می شه و بوسیله کدی که در ادامه کد بالا میاد بعد از اتمام حرکت چک می کنه که آیا برخوردی ایجاد شده یا نه ...
اون Sleep هم بخاطر کرش نشدن بازی هست که توصیه خود انجین 20 میلی ثانیه هست ولی من برای هر چه دقیق تر شدن 0 گذاشتم .
كد: |
while(true)
{
if(((T01.X-T02.X)*(T01.X-T02.X)) + ((T01.Y-T02.Y)*(T01.Y-T02.Y)) < 625) Lose_C = 1;
if(((T01.X-T03.X)*(T01.X-T03.X)) + ((T01.Y-T03.Y)*(T01.Y-T03.Y)) < 625) Lose_C = 1;
if(((T02.X-T03.X)*(T02.X-T03.X)) + ((T02.Y-T03.Y)*(T02.Y-T03.Y)) < 625) Lose_C = 1;
Sleep(0);
} |
خوب به نظر من با گذاشتن 0 در Sleep بالا سرعت چک کردن کد بالا با سرعتی که شما گفتی یکسان می شه و هیچ تفاوتی با سرعت حلقه اصلی بازی نداره پس حتی اگه ایونت مربوط به برخورد هم وجود داشت نمی تونست این برخورد رو تشخیص بده . همون طور هم که توی پرسش و پاسخ Quest3D گفتم فیزیک ODE هم همچین مشکلی داره و فکر کنم تو بازی های سریع که آبجکت ها سرعت بالا دارند مثلا Racing مشکل بوجود بیاد . ولی تا اونجایی که یادمه Virtools همچین مشکلی نداشت یعنی ویرتولز از حلقه اصلی نوع اول استفاده می کنه ؟ به نظرت مفهوم سرعت حلقه اصلی رو متوجه شدم ؟ |
_________________ Make something happen |
|