|
|
|
|
|
|
نويسنده |
پيغام |
Ali مدیر کل
تاريخ عضويت: شنبه 20 تير 1383 تعداد ارسالها: 2984 محل سكونت: On the edge
3 شنبه 30 مرداد 1386 - 01:46 |
|
|
كد: |
if (x == argument1 && y == argument2) return true;
if (point_distance(x,y,argument1,argument2) <= argument0)
{
if place_free(argument1,argument2)
{
direction = point_direction(x,y,argument1,argument2);
x = argument1;
y = argument2;
}
return true;
}
__goaldir = point_direction(x,y,argument1,argument2);
__trynumb = 0;
__maxrot = 30;
__stepsize = 10;
for (i = 0; i<180; i += __stepsize)
{
__dir = (__goaldir-i+360) mod 360;
__dif = (direction-__dir+360) mod 360;
if (__dif <= __maxrot || __dif >= 360-__maxrot)
{ __try[__trynumb] = __dir; __trynumb += 1;}
__dir = (__goaldir+i+360) mod 360;
__dif = (direction-__dir+360) mod 360;
if (__dif <= __maxrot || __dif >= 360-__maxrot)
{ __try[__trynumb] = __dir; __trynumb += 1;}
}
__ahead = 4;
speed = argument0;
for (i = 0; i < __trynumb; i += 1)
{
direction = __try[i];
if (place_free(x + __ahead*hspeed,y + __ahead*vspeed) && place_free(x+hspeed,y+vspeed))
{
x = x + hspeed;
y = y + vspeed;
speed = 0;
return true;
}
}
speed = 0;
return false;
|
این الگوریتم مسیر یابی عمومی گیم میکر نوشته خود مارک اورمارس خالق گیم میکره. ازونجایی که سورس بازی افسانه رستم تو سایت ارایه شده، می تونین نحوه استفاده از این الگوریتم ساده رو خیلی راحت ببینین. البته این الگوریتم دو تا پارامتر مهم step_size و max_rot داره که باید حتما با توجه به نوع و سبک بازی و طراحی محیط تنظیم بشن.
الگوریتم a* تو گیم میکر از نظر دقت خوب جواب میده. ولی در کل برای گیم میکر یه کد پیچیده بحساب میاد و روی پرفرمنس تاثیر منفی میذاره. مخصوصا از این نظر که الگوریتم های مسیر یابی دوبعدی، عمدتا تو بازیهای استراتژیک بکار میرن که تو این بازیها، هر لحظه ده ها آبجکت بطور همزمان از این الگوریتم استفاده میکنن. |
_________________ پی سی گیمرز - آرشيو بزرگ بازی های کامپیوتری |
|
بازگشت به بالا |
|
|
|
|
|
|
|
|
صفحه 3 از 3 |
تمام ساعات و تاريخها بر حسب 3.5+ ساعت گرينويچ مي باشد برو به صفحه قبلي 1, 2, 3
|
|
شما نمي توانيد در اين انجمن نامه ارسال كنيد. شما نمي توانيد به موضوعات اين انجمن پاسخ دهيد شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن ويرايش كنيد شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن حذف كنيد شما نمي توانيد در نظر سنجي هاي اين انجمن شركت كنيد
|
|
|