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





صفحه اول انجمنها -> ساخت بازی با نرم افزار Unity -> سوال و جواب (کد نویسی جاوا اسکریپت)
 

ارسال يك موضوع جديد   پاسخ به يك موضوع ديدن موضوع قبلي :: ديدن موضوع بعدي
برو به صفحه قبلي  1, 2, 3 ... 116, 117, 118 ... 162, 163, 164  بعدي

نويسنده
پيغام
vahab
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 3 شنبه 5 ارديبهشت 1385
تعداد ارسالها: 474
محل سكونت: کرج


شنبه 26 آذر 1390 - 14:45
پاسخ بصورت نقل قول
farhadi.ms نوشته:
سلام به همه دوستان.
به یه مشکلی برخورد کردم که هرچی گشتم هم نتونستم راه حل اش رو توی answer یونیتی و جای دیگه ای پیدا کنم.خیلی هم وقتم رو گرفت ولی نتیجه نداشت متاسفانه Crying or Very sad

من کارکتر دشمنی دارم که به محض پلی شدن گیم انیمیشن سیکل درجای حرکت اش هم شروع میشه و با move کارکتر کنترل حرکت هم میکنه. میخوام وقتی به یه باکس کالیدور میخوره یک بار انیمیشن "چرخیدن" ای رو که براش درست کردم کامل اجرا کنه و بعد دوباره انیمشن " حرکت رو اجرا کنه" و به مسیرش ادامه بده.
نزدیک ترین چیزی که بلدم که بتونه موقع برخورد انیمیشن رو پلی کنه اینه که اصلن مناسب این مورد نیست
كد:
var animateobject: GameObject;

function OnTriggerEnter (collision : Collider)

{

if (collision.gameObject.name == "character_MAN") //

   {

      animateobject.animation.CrossFade ("walk");

   }
}

البته از این کد هم گفتم شاید بشه استفاده هایی کرد موقع برخورد که اصلن دیگه انیمیشن چرخش نخواد:
كد:

 transform.eulerAngles.y += Input.GetAxis("Horizontal");


که البته به مقدار کافی (180 یا 90) کارکتر رو بچرخونه.
به نظر خوبی دومی به اینه که دیگه اگه از این راه باشه نیاز به قطع کردن حرکت پیوسته کارکتر کنترل برای اجرای انیمیشن چرخش نیست. چون اونم بلد نیستم!! برای مبهمه الان.

انتخاب کدوم راه برای راهنمایی به بنده به عهده شما صاحب نظران. اگه هر دو رو هم بفرمایید که دیگه سرخ و سفیدمون میکنید.
پیشاپیش ممنون از همه Surprised


دوست عزیز اگر از کاراکتر کنترلر استفاده می کنید بهتره برای برخورد از OnControllerColliderHit استفاده کنید . کاراکتر کنترلر مانند دیگر کالیدر ها عمل نمی کند

_________________
بودیم و کسی پاس نمی داشت که هستیم
باشد که نباشیم و بدانند که بودیم

WWW.Duw-Studio.Ir

WWW.YeganehAfzar.Ir

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

نويسنده
پيغام
farhadi.ms
کاربر جدید
کاربر جدید


تاريخ عضويت: 1 شنبه 14 شهريور 1389
تعداد ارسالها: 16


شنبه 26 آذر 1390 - 16:25
پاسخ بصورت نقل قول
آقا وحاب و آقا امید خیلی ممنون.
با اونی که آقا وحاب گفتن ، برخورد انجام شد و دیباگ لوگ اعلام میکنه برخورد رو.ولی حالا برای اینکه 90 یا 180 بچرخه همون تیکه کدی که آقا امید گفت رو استفاده کردم ولی کارکتر بعد از برخورد به کالیدر دیگه دائم دوره خودش میچرخه.یعنی سر 90 درجه، چرخش اش رو قطع نمیکنه. میشه باز راهنمایی بفرمائید
كد:
var controller : CharacterController = GetComponent(CharacterController);

function OnControllerColliderHit (hit : ControllerColliderHit) {

   for(var i=0;i<90;i++)
   {
        controller.transform.eulerAngles.y +=1;
         yield WaitForSeconds(.1);
   }
   
print("shod");
}


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

نويسنده
پيغام
vahab
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 3 شنبه 5 ارديبهشت 1385
تعداد ارسالها: 474
محل سكونت: کرج


شنبه 26 آذر 1390 - 22:42
پاسخ بصورت نقل قول
farhadi.ms نوشته:
آقا وحاب و آقا امید خیلی ممنون.
با اونی که آقا وحاب گفتن ، برخورد انجام شد و دیباگ لوگ اعلام میکنه برخورد رو.ولی حالا برای اینکه 90 یا 180 بچرخه همون تیکه کدی که آقا امید گفت رو استفاده کردم ولی کارکتر بعد از برخورد به کالیدر دیگه دائم دوره خودش میچرخه.یعنی سر 90 درجه، چرخش اش رو قطع نمیکنه. میشه باز راهنمایی بفرمائید
كد:
var controller : CharacterController = GetComponent(CharacterController);

function OnControllerColliderHit (hit : ControllerColliderHit) {

   for(var i=0;i<90;i++)
   {
        controller.transform.eulerAngles.y +=1;
         yield WaitForSeconds(.1);
   }
   
print("shod");
}


راستی اینم بگم که باز روی همین کار کردم تا خودم اگه بشه حلش کنم مزاحم تون نشم. ولی نشد.بازم ممنون


دوست عزیز برای محدود کردن چرخش باید میزان چرخش جاری کاراکتر رو مقایسه کنید و نیازی نیست از حلقه For استفاده کنید.
برای تاخیر در چرخش نیاز به WaitForSeconds نیست. می توانید میزان چرخش در هر فریم رو در Time.deltaTime ضرب کنید.

_________________
بودیم و کسی پاس نمی داشت که هستیم
باشد که نباشیم و بدانند که بودیم

WWW.Duw-Studio.Ir

WWW.YeganehAfzar.Ir

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

نويسنده
پيغام
omidgamer
در حال رشد
در حال رشد


تاريخ عضويت: 1 شنبه 15 آذر 1388
تعداد ارسالها: 61


2 شنبه 12 دي 1390 - 15:09
پاسخ بصورت نقل قول
از بچه های سایت کسی میدونه چطور میشه تاریخ فعلی سیستم رو در آورد و استفاده کرد.آخه میخوام بازیم بعد یه تاریخی اکسپایر بشه Sad
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
vahab
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: 3 شنبه 5 ارديبهشت 1385
تعداد ارسالها: 474
محل سكونت: کرج


2 شنبه 12 دي 1390 - 18:12
پاسخ بصورت نقل قول
omidgamer نوشته:
از بچه های سایت کسی میدونه چطور میشه تاریخ فعلی سیستم رو در آورد و استفاده کرد.آخه میخوام بازیم بعد یه تاریخی اکسپایر بشه Sad

دوست عزیز باید از کلاس System.DateTime استفاده کنید. در زبان جاوا توی کدت خط اول این کد رو اضافه کن :
كد:
import System;

ور در زبان سی شارپ
كد:
using System;


این کلاس متد ها و مشخصه های برای کار با تاریخ و زمان داره Arrow

_________________
بودیم و کسی پاس نمی داشت که هستیم
باشد که نباشیم و بدانند که بودیم

WWW.Duw-Studio.Ir

WWW.YeganehAfzar.Ir

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

نويسنده
پيغام
omidgamer
در حال رشد
در حال رشد


تاريخ عضويت: 1 شنبه 15 آذر 1388
تعداد ارسالها: 61


4 شنبه 14 دي 1390 - 00:56
پاسخ بصورت نقل قول
نقل قول:

این کلاس متد ها و مشخصه های برای کار با تاریخ و زمان داره

با عرض تشكر.حالا من چطور ميتونم از متدهاي اين كلاس استفاده كنم؟اگه ميشه به تيكه برنامه بنويسيد كه تاريخ سيستم رو پرينت بكنه
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
Seyphonex
بازی ساز
بازی ساز


تاريخ عضويت: شنبه 5 شهريور 1390
تعداد ارسالها: 119
محل سكونت: Fars


4 شنبه 14 دي 1390 - 01:46
پاسخ بصورت نقل قول
omidgamer نوشته:
نقل قول:

این کلاس متد ها و مشخصه های برای کار با تاریخ و زمان داره

با عرض تشكر.حالا من چطور ميتونم از متدهاي اين كلاس استفاده كنم؟اگه ميشه به تيكه برنامه بنويسيد كه تاريخ سيستم رو پرينت بكنه




كد:
function Update () {
var times= System.DateTime.Now.ToString("hh:mm:ss");
var date = System.DateTime.Now.ToString("MM/dd/yyyy");
var month = System.DateTime.Now.get_Month();
var day = System.DateTime.Now.get_Day();
print(times);
}
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
king_of_persia
بازی ساز
بازی ساز


تاريخ عضويت: شنبه 2 مهر 1390
تعداد ارسالها: 161


شنبه 24 دي 1390 - 00:18
پاسخ بصورت نقل قول
سلام. من کد زیر را نوشتم و درست کار می کند اما warning میده میگه Array index is out of range مشکل کجاست؟
كد:

var Objs : Rigidbody[];
var Explo:GameObject;
var Force: float=1000;

function Delete () {
   Instantiate(Explo,transform.position,transform.rotation);
   Objs = FindObjectsOfType(Rigidbody);
   //Destroy(gameObject,0.001);
   for(var i:int=0 ; i<=50 ; i++)
   {
//      if(Vector3.Distance(transform.position,Objs[i].transform.position)<1000)
   //      Objs[i].rigidbody.AddForce ((Objs[i].transform.position-transform.position).normalized*(Force/Vector3.Distance(transform.position,Objs[i].transform.position)));
      Objs[i].rigidbody.AddForce(Vector3(01,0,1));
   }
   
}


و یک سوال دیگر وقتی من اینطوری آرایه تعریف می کنم ایراد می گیره! چطوری تعداد آرایه را با کد کنترل کنم؟
كد:

var Objs : Rigidbody[60];


خیلی ممنون! Question

_________________
امید خودتو هیچوقت از دست نده . وگرنه بدان هیچوقت موفق نخواهی شد...
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

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


تاريخ عضويت: 2 شنبه 23 آذر 1388
تعداد ارسالها: 1034


شنبه 24 دي 1390 - 00:43
پاسخ بصورت نقل قول
king_of_persia ,

در مورد کد اولت توی حلقه for هیچ تضمینی نیست که طول آرایه شما یه عدد مشخص باشه بنابراین بهتر هست بجای i<=50 بنویسی i < Objs.Length

نقل قول:
و یک سوال دیگر وقتی من اینطوری آرایه تعریف می کنم ایراد می گیره! چطوری تعداد آرایه را با کد کنترل کنم؟


كد:
var Objs : Rigidbody[] = new Rigidbody[50];
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
sadegh1993
بازی ساز
بازی ساز


تاريخ عضويت: جمعه 20 شهريور 1388
تعداد ارسالها: 131


جمعه 14 بهمن 1390 - 11:25
پاسخ بصورت نقل قول
سلام

ببخشید می خواستم بدونم که چطوری میشه یه کنترل مجازی برای موبایل ساخت که بشه با اون به rigidbody یه توپ نیرو وارد کرده و اون رو حرکت داد (مثل بازی های موبایل که مثلا با دکمه های سمت چپشون کاراکتر رو حرکت میدیم)

این کدی هست که من توپ رو مثلا w, a, s ,d حرکت میدم.
var Speed:float;
function FixedUpdate()
{
if (Speed>0)
{
if (Input.GetAxis("Horizontal")>0)
{
rigidbody.AddForce(Vector3.right*(Speed*Time.deltaTime));
}
if (Input.GetAxis("Horizontal")<0)
{
rigidbody.AddForce(Vector3.left*(Speed*Time.deltaTime));
}
if (Input.GetAxis("Vertical")>0)
{
rigidbody.AddForce(Vector3.forward *(Speed*Time.deltaTime));
}
if (Input.GetAxis("Vertical")<0)
{
rigidbody.AddForce(Vector3.forward*(-Speed*Time.deltaTime));
}
}
}

خواهش میکنم ساده راهنماییم کنید

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

نمايش نامه هاي ارسال شده قبلي:   
ارسال يك موضوع جديد   پاسخ به يك موضوع    صفحه 117 از 164 تمام ساعات و تاريخها بر حسب 3.5+ ساعت گرينويچ مي باشد
برو به صفحه قبلي  1, 2, 3 ... 116, 117, 118 ... 162, 163, 164  بعدي


 
پرش به:  


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


unity3d

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