مرسی حامد جون.
من که چیزی نفهمیدم. نمیشه مثال کدی بزنی ؟
:31:
Printable View
مرسی حامد جون.
من که چیزی نفهمیدم. نمیشه مثال کدی بزنی ؟
:31:
جان؟ خوب اینجوری که خیلی جالب شد.
من الان دسترسی به یونیتی ندارم ، کد نیمتونم بنویسم ولی سعس میکنم روند کار رو به توابع مورد نیاز توضیح بدم.
دوربین همواره یه فاصله ای با اکتورش داره ، حالا مشکل زمانی پیش میاد که یه جسم مابین این 2 تا قرار بگیره.
برای این که متوجه بشیم جسمی بین این 2 تا هست یا نه ، تابع Physics.Linecast به شما کمک میکنه.
حالا داستان اینه که زمانی که جسمی بین transform.position و Target.position قرار بگیره ، تابع Linecast مقداره True برمیگردونه و if برقرار میشه.کد:
if (Physics.Linecast(transform.position, Target.position))
{
DoSome();
}
حالا باید داخل شرط شما دوربین رو به سمت اکتور اونقدر نزدیک کنید که جسم "فی مابین":31: رو رد کنه .
ممنون حامد جون.
الان از این کد استفاده کردم و تشخیص میده که دیوار بین دوربین و اکتور هست اما همیشه True عه ... یعنی وقتی دوربین رو میبرم توی فضای بسته بازم False نمیشه نیدونم چرا :31:
حالا از همه مهمتر واسه اینکه فاصله ی دوربین رو نزدیک اکتور کنم چه راهی رو پیشنهاد میکنی ؟
من از اسکریپت Mouse Orbit استفاده کردم و توی این کد تشخیص دیوار بین دوربین و اکتور رو نوشتم و خودم distanceش رو برابر 1 میکنم که حسابی بره نزدیک توپ.
الان همه چی عالیه منم خیلی خوشالم :31:ولی مشکلم اینه که همیشه distance 1 میمونه و در واقع شرط همیشه true هست ولی من میخوام وقتی توی فضای بسته س دوربین شرط false شه و دوباره بیاد سر جاش دوربین. :31:
عرض کنم که :
1- برای نزدیک کردن ( همین چیزی که استفاده کردی ) فاصله فعلیه دوربین و توپ رو بگیر و به صورت کاهشی ازش کم کن تا شرط False بشه ، نه این که به صورت ناگهانی فاصله رو 1 کنی.
2- قطعا مشکل از تابع نیست ، یه جایی سوتی دادی و کالیدری که فراموش کردی بین این 2 تا مونده ، یا این که بیرون از شرط مقدار رو به مقدار اولیه برگردوندی؟ ( بیرون از شرط منظور NOT شرط هست )
3- اگه با Mouse Orbit مشکلی نداری ، روشی که انتخاب کردی روش خوبیه ، ولی میتونی از توابع Vector3.Lerp , Vector.MoveTowards هم استفاده کنی ( اگر Mouse Orbit برات مشکلی ایجاد میکنه )
سلام ميشه بگيد demo ها و Assets هاشو از کجا گير بيارم
حامد جون باور کن نمیشه :31:
نمیتونی یه مثال با یونیتی درست کنی بخدا ثواب داره ها :31:
با سلام!
من یک کارکتر به بازی اوردم و تمام انیمشین ها را دارد ولی من می خواهم در بازی حرکت راه رفتن را انجام دهد می خواستم کسی کد جاوا یا c++ را دارد و همون کد را برای من توضیح دهد خیلی نیاز دارم ممنون ئمیشم...
نقل قول:
عرض کنم که :
1- برای نزدیک کردن ( همین چیزی که استفاده کردی ) فاصله فعلیه دوربین و توپ رو بگیر و به صورت کاهشی ازش کم کن تا شرط False بشه ، نه این که به صورت ناگهانی فاصله رو 1 کنی.
2- قطعا مشکل از تابع نیست ، یه جایی سوتی دادی و کالیدری که فراموش کردی بین این 2 تا مونده ، یا این که بیرون از شرط مقدار رو به مقدار اولیه برگردوندی؟ ( بیرون از شرط منظور NOT شرط هست )
3- اگه با Mouse Orbit مشکلی نداری ، روشی که انتخاب کردی روش خوبیه ، ولی میتونی از توابع Vector3.Lerp , Vector.MoveTowards هم استفاده کنی ( اگر Mouse Orbit برات مشکلی ایجاد میکنه )
کجاش مشکل داری؟:3:نقل قول:
حامد جون باور کن نمیشه [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
نمیتونی یه مثال با یونیتی درست کنی بخدا ثواب داره ها [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
این واسه فاصله دوربین و توپ
البته باید قبلش از نوع Transform متغیر Ball و Camera تعریف کنی و تگ هر کدوم رو بهشون نسبت بدیکد:distanceToBall = Vector3.Distance(Ball.position , Camera.position);
بعد آقاحامد میگه باید بصورت کاهشی کم کنی فاصله رو
مثلا
بعد بگیکد:distanceToBall - = 10;
2,3 هم که هیچیکد:if(distanceToBall<=0)
}
Do something
{
اینجانقل قول:
سلام ميشه بگيد demo ها و Assets هاشو از کجا گير بيارم
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
نقل قول:
من یک کارکتر به بازی اوردم و تمام انیمشین ها را دارد ولی من می خواهم در بازی حرکت راه رفتن را انجام دهد می خواستم کسی کد جاوا یا c++ را دارد و همون کد را برای من توضیح دهد خیلی نیاز دارم ممنون ئمیشم...
Player رو باید قبلش تعریف کنی و تگ پلیر رو بهش بدی:12:کد:Player.animation.Play("Walk");
میشه کل کد بدید ممنونت میشمنقل قول:
Player رو باید قبلش تعریف کنی و تگ پلیر رو بهش بدی [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
نقل قول:
میشه کل کد بدید ممنونت میشم
قبلش تو ادیتور یونیتی باید پلیر رو انتخاب کنی و بالا سمت راست قسمت Tag ها تگ Player رو به آبجکت پلیر بدی!کد:
private var Player : GameObject;
function Start () {
Player = GameObject.FindWithTag("Player");
}
حالا هر جا بخوای چه تو انیمیشن چه تغییرمکان(ترنسفورم) میتونی از Player استفاده کنی