Contacts
صفحه اصلی پورتال | صفحه اصلی تالار | ثبت نام | اعضاء | گروه ها | جستجو | پرسش و پاسخ | فروشگاه الکترونیکی | خرید پستی بازی های کامپیوتری





صفحه اول انجمنها -> ساخت بازی با نرم افزار 3D Game Studio -> يكي از طريقه هاي ايجاد تير در 3dgamestudio
 

ارسال يك موضوع جديد   پاسخ به يك موضوع ديدن موضوع قبلي :: ديدن موضوع بعدي

يكي از طريقه هاي ايجاد تير در 3dgames
نويسنده
پيغام
aloneinthedark
در حال رشد
در حال رشد


تاريخ عضويت: 2 شنبه 20 مهر 1383
تعداد ارسالها: 37
محل سكونت: كرج


1 شنبه 20 فروردين 1385 - 21:55
پاسخ بصورت نقل قول
براي ايجاد تير يا گلوله در زمان اجرا :

مثلا ميخواهيم در زمان اجرا براي يك تفنگ تير بسازيم كه هم شليك بشه و هم پس از برخورد
به در و ديوار عكسل العمل داشته باشه

يه نكته اينه كه تير بايد در نوك لوله تفنگ ايجاد بشه وگرنه مثلا اگر داخل تقنگ ايجاد بشه تو تفنگ گير ميكنه

براي اينكه مكان نوك لوله رو داشته باشيم از دستور زير استفاده ميكنيم
;(vec_for_vertex (vector, entity, number

اين دستور مختصات vertex با شماره number كه متعلق به entity است رو در بردار vector
قرار مي دهد

براي به دست آوردن شماره vertex در vertex ,med مورد نظر رو انتخاب كرده و در نوار وضعيت
شمارهvertex رو ببينيد

برنامه ز ير با فشردن كليد a يك تير ايجاد كرده كه پس از برخورد به block يا entity در اون مكان ذراتي ايجاد ميشه
وقتي كليد a را فشار داديم ممكن دستور ايجاد تير مثلا 5 بار اجرا بشه و 5 تير پشت سر هم ايجاد بشه كه اين مطلوب نيست
براي جلوگيري از اين عمل تير در هر نيم ثانيه ايجاد ميشه كه براي داشتن زمان گذشته
از متغيير از پيش تعريف total_secs استفاده ميكنيم

كد:



///////////////////////////////////////////particle_arrow
Function P_arrow_spec_fun()
{
my.alpha -= 4*time;
IF(My.alpha <= 0) { my.alpha = 0; my.lifespan = 0; }
}

Function P_arrowspezial()
{
my.red = 128 ;
my.green = 128 ;
my.blue = 64 ;
my.bmap = null;
my.vel_x = random( 4 ) - 2 ;
my.vel_y = random( 4 ) - 2 ;
my.vel_z = random( 4 ) - 2 ;
my.size = 10 ;
my.alpha = 60 ;
my.gravity = 0 ;
my.streak = off;
my.flare = on;
my.bright = on;
my.beam = on;
my.move = on;
my.transparent = on;
my.function = P_arrow_spec_fun;
}
///////////////////////////////////////////endof particle_arrow

var vec_pos_p_arrow[3];
function arrow_event
{
if((event_type==event_block)||(event_entity))
{
vec_set(vec_pos_p_arrow.x,my.x)
effect(P_arrowspezial,1,vec_pos_p_arrow.x,nullvector);
my.event = null;
ent_remove(my);
}
}

action shoot_arrow
{
my.pan = you.pan;
my.event = arrow_event;
my.enable_block = on;
my.enable_entity = on;
arrow_time = total_secs;
while(my)
{
ent_move(vector(80*time,0,0),nullvector);
wait(1);
}
}

////////////////////////////////
var arrow_time;
entity* arrow;

action player
{
var vec_arrow_pos[3];
while(1)
{
if((key_a)&&((arrow_time+0.5)<=total_secs))
{
vec_for_vertex(vec_arrow_pos.x,my,vertexnumber);
arrow = ent_create("filename",vec_arrow_pos,act_arrow);
}
wait(1);
}

}
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
شهروز
مدیر انجمن
مدیر انجمن


تاريخ عضويت: جمعه 16 مرداد 1383
تعداد ارسالها: 3279
محل سكونت: Germany


5 شنبه 24 فروردين 1385 - 13:48
پاسخ بصورت نقل قول
ممنون بابك جان.
در ضمن شما مي توانيد كدهايتان را در تگ Code قرار دهيد تا بهتر خوانده شوند.

موفق باشيد.

_________________




استدیوی نرم افزاری بلوبالک
www.Bluebulk.info
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر
 

نمايش نامه هاي ارسال شده قبلي:   
ارسال يك موضوع جديد   پاسخ به يك موضوع    صفحه 1 از 1 تمام ساعات و تاريخها بر حسب 3.5+ ساعت گرينويچ مي باشد


 
پرش به:  


شما نمي توانيد در اين انجمن نامه ارسال كنيد.
شما نمي توانيد به موضوعات اين انجمن پاسخ دهيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن ويرايش كنيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن حذف كنيد
شما نمي توانيد در نظر سنجي هاي اين انجمن شركت كنيد


unity3d

بازگردانی به فارسی : علی کسایی @ توسعه مجازی کادوس 2004-2011
Powered by phpBB © 2001, 2011 phpBB Group
| Home | عضويت | ليست اعضا | گروه هاي كاربران | جستجو | راهنماي اين انجمن | Log In |