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





صفحه اول انجمنها -> گفتگوی آزاد پیرامون مسایل متفرقه -> آموزش کار با ادیتور در 1.1.0 Quick2D و ساخت یک مثال کوچک
 

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

آموزش کار با ادیتور در 1.1.0 Quick2D و س
نويسنده
پيغام
شهروز
مدیر انجمن
مدیر انجمن


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


3 شنبه 11 مهر 1391 - 14:16
پاسخ بصورت نقل قول
این آموزش برای نسخه 1.1.0 هست و با نسخه های قدیمی تر کار نمیکند.
(دانلود آخرین نسخه بصورت رایگان)

ابتدا دکمه New Project را بزنید و یک پروژه با نام Ghost ایجاد کنید.
در پایین Object List روی علامت + کلیک کنید تا یک آبجکت جدید اضافه کنیم.
نام آبجکت را Player قرار دهید.
تصویر زیر را در پوشه Sprites قرار دهید.



وارد آبجکت Player شده و روی Snippet های onCreate و onLoop کلیک کنید.
یک آرایه با نام player_id تعریف کنید:
كد:
var player_id=new Array();

به دلیل اینکه میخواهیم برای کاراکتر انیمیشن ایجاد کنیم از آرایه استفاده می کنیم.
در رویداد Start یک حلقه بصورت زیر تعریف کنید:
كد:
for (var i=0;i<8;i+=1)
   {
      player_id[i]=load_texture("ghost_floating_strip8.png",i*32,0,32,32);
      set_origin(player_id[i],-8,-8);
   }

همانطور که میبینید ساختار تابع load_texture کمی متفاوت از نسخه های قبلی است.
در اینجا شما علاوه بر نام تصویر، مکان شروع و پایان و اندازه برش را نیز مشخص می کنید.
در اینجا ما 8 فریم 32 پیکسلی داریم که با استفاده از این حلقه، هر فریم را در یک خانه آرایه قرار می دهیم. ضمنا با استفاده از تابع set_origin می توانید مرکز ثقل آبجکت را تنظیم کنید.
یک متغیر سراسری با نام player_frame تعریف کنید.
در رویداد Main برای نمایش کاراکتر بنویسید :
كد:
draw_sprite(player_id[player_frame],400-get_width(player_id[player_frame]),300-get_height(player_id[player_frame]),255);

در اینجا با استفاده از پارامتر های get_width و get_height کاراکتر را دقیقاً در وسط صفحه قرار می دهیم.
در رویداد Start به متغیر player_frame مقدار اولیه 0 بدهید.
یک متغیر سراسری دیگر با نام player_timer تعریف کنید و در رویداد Start به آن مقدار 0 دهید.

حالا در انتهای اسکریپت یک تابع با نام Animate اضافه کنید.
كد:
function Animate ()
{
   if (player_timer<5)
   {
      player_timer+=1;
   }else{
      if (player_frame<8)
      {
         player_frame+=1;
      }else{
         player_frame=0;
      }
      player_timer=0;
   }
}

ساختار بالا یک شمارنده زمان دار است که در بازی ها بسیار پر کاربرد است. پس سعی کنید آن را به خاطر بسپارید.
در این تابع مشخص می کنیم که با گذشت مدت زمان دلخواه ما، به player_frame اضافه شود و در عین حال، حالت loop داشته باشد.
دقت کنید که به هیچ وجه از حلقه های تکرار برای این کار استفاده نکنید.

حالا در رویداد Main و قبل از return این تابع را صدا بزنید:
كد:
Animate();


بسیار خب، حالا اسکریپت خود را با استفاده از دکمه دیسکت ذخیره کنید و دکمه Run را بزنید.
همانطور که می بینید تصویر پلیر انیمیت شده است. برای تغییر سرعت انیمیشن می توانید مقدار player_timer<5 را تغییر دهید.

شاید دوست داشته باشید که بجای یک تصویر سیاه، یک پس زمینه واقعی داشته باشید. کافیه تصویر مورد نظر خود را در پوشه Sprites قرار بدید و یک آبجکت با نام Background بسازید.

من از تصویر زیر استفاده می کنم.
(بهتر است همیشه از تصاویر png استفاده کنید)

http://8pic.ir/images/o13ft0g4o4mwpw6jxp1.png

حالا در آبجکت Background روی Snippet های on Create و on Loop کلیک کنید.
سپس یک متغیر سراسری با نام background_id تعریف کنید و در رویداد Start بنویسید :
كد:
background_id=load_texture("bg.png");


حالا در رویداد Main بنویسید :
كد:
draw_background(background_id);

اسکریپت را ذخیره کنید و بازی را اجرا کنید.

فقط پس زمینه !

چرا ؟ دلیلش ساده است. آبجکت Background بعد از Player ترسیم میشه بنابراین پلیر همیشه پشت Background قرار داره. برای تغییر ردیف ترسیم آبجکت ها، می توانید از دکمه های بالای ادیتور که به شکل فلش های بالا و پایین هستند استفاده کنید.
روی فلش بالا یک بار کلیک کنید تا آبجکت Background بالای آبجکت Player قرار بگیرد.

با اجرای دوباره بازی میبینید که همه چیز درست شده است.

حالا یک آبجکت با نام Sword بسازید.



پس از ایجاد رویداد های on Create و on Loop چهار متغیر سراسری بصورت زیر تعریف کنید :
كد:
var sword_id;
var sword_angle;
var mouseX,mouseY;


در رویداد Start تصویر شمشیر را لود می کنیم و زاویه را برابر 0 قرار می دهیم :
كد:
sword_id=load_texture("sword_simple.png");
set_origin(sword_id,9,80);
sword_angle=0;


در رویداد Main شمشیر را در وسط صفحه رسم می کنیم :
كد:
draw_sprite(sword_id,400-get_width(sword_id)/2,300-get_height(sword_id)/2,255);


حالا می خواهیم کاری کنیم که شمشیر با چرخش دور پلیر، همیشه جهتش به سمت ماوس باشد.

بنابراین :
كد:
sword_angle=lookAt(sword_id,mouseX,mouseY);


متغیر های mouseX و mouseY را در رویداد MouseMove مقدار دهی کنید :
كد:
function onMouseMove (e){
   mouseX=e.X;
   mouseY=e.Y;
   rotate(sword_id,sword_angle);
}




خسته نباشید.

_________________




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

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


 
پرش به:  


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


unity3d

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