«یا اللهُ یا رَبِّ یا حَیُّ یا قَیّوم یا ذَالجَلالِ وَ الاکرام اَسئَلُکَ بِاسمِکَ اَلعَظیم اَلاَعظَم اَن تَرزُقَنی رِزقاً حَلالاً طَیِّباً بِرَحمَتِکَ الواسِعَه یا اَرحَمَ الرّاحِمِین.»
سوئیچ بین دوربین ها در یونیتی/تغییر دوربین در یونیتی/سوئیچ بین چند دوربین در یونیتی :: گیم اور _ بازیسازی با unity + مطالب متفرقه

گیم اور _ بازیسازی با unity + مطالب متفرقه

آموزش های علمی با اجازه ی خدا تقدیم به هرکس خدا بخواد

آموزش های علمی با اجازه ی خدا تقدیم به هرکس خدا بخواد

به نام خدا
--
گروه قدیم ما promakers.ir یا پرومیکرز بود که بالای هزار اموزش توش ساخته بودم به اسم sajjad3011 ولی حیف ادمین سایتش عوض کرد
حالا سوالی بود کاری بود این شمارمه

قدیمیا دلم براتون تنگ شده... فقط معرفی کنید توی پیامک یا تماس یاد بیارید.
اگه جواب ندادم شاید موقعیت نداشته باشم.
بگید توی پیام از بچه های پرومیکرز هستید.

---
سوالی بود بذارید
نظر خصوصی نذارید
پاسخش سخته
دوست داشتید شماره بذارید تو واتساپ یا ایتا یا .... گروه بزنیم.
09358077198

بایگانی
پیوندها
منبع:gameover.blog.ir

روش یک:
دو متغیر از نوع Camera تعریف کنید که public باشن.
بعدش دو دوربین بذارید توی صحنه و هر دو رو درگ کنید روی متغیرهای cam1 و cam2 مثالمون.
بعدش کد مثل این رو داریم که اگه 1 یا 2 زدیم سوئیچ کنه بین دو دوربین:
public GameObject cam1,cam2;
void Update () {
    
     if(Input.GetKey("1")){
       Debug.Log("Using Camera 1");
      cam1.SetActive(true);
      cam2.SetActive(false);
      }
  if(Input.GetKey("2")){
       Debug.Log("Using Camera 2");
      cam2.SetActive(true);
      cam1.SetActive(false);
      }
     }


روش دو:
نکته: کد به زبان js هست. هرچند کد سیشارپ رو توصیه می کنم اما به علت کمبود وقت سرعتی کپی کردم.
شما سعی کنید حتما کد رو به سیشارپ تغییر بدید چون ساختار سیشارپ خیلی بهتر و استاندارد تر هست و م کلا js(جاوااسکریپت) رو توصیه نمی کنم.(اکثر حرفه ای ها هم بعد از مدتی به سیشارپ روی می آرن . شاید فکر کنید سخته اما من قول میدم بعدا می فهمید سیشارپ حتی از js آسونترم هست و لذت می برید)

اگه به مشکلی برخوردید بپرسید.

Switching Cameras at runtime
[تصویر: camera_switch_runTime.jpg]
برای تغییر دوربین در بازی میخوام الگوریتم یا راهکاری رو برای حل این مسئله یاد بدم با توجه به تحقیقاتم.

اصل کار اینطوری هست :

کد js:
function Update(){
       if(Input.GetKey("1")){
      Debug.Log("Using Camera One");
      camSwap(1);
       }
    }
    function camSwap(currentCam : int){
     
    }
کد بالا یه کار تمیز هست فعلا کامل نیست . فقط اومده صورت مسئله رو ساده کرده و می گه اگه "1" زدیم عدد 1 رو بده به ورودی تابعی به نام camSwap که جلوتر کدهاشو میاریم واسه سوئیچ دوربین روی ابجکت دلخواه.

کد js:
function camSwap(currentCam : int){
     var cameras = GameObject.FindGameObjectsWithTag("cam");
     
     for (var cams : GameObject in cameras){
      cams.GetComponent(Camera).enabled = false;
     }
    }
ما فرض کردیم توی پروژه خودمون سه تا دوربین به اسم "cam" داریم و توی اسکریپت فوق با استفاده از GetComponent دوربین ها رو موقتا غیر فعال می کنیم.

حالا دوربین دلخواه رو کدی که در ادامه میاریم به عنوان دوربین جاری فعال می کنیم :
کد js:
var oneToUse : String = "Camera"+currentCam;
     gameObject.Find(oneToUse).GetComponent(Camera).enabled = true;
یادتون نره اسم دوربین ها رو Camera1, Camera2, Camera3 بذارید.

اینک اسکریپت کامل به دو زبان :
کد js:(توصیه نمی کنم)
//js


    function Update () {
     if(Input.GetKey("1")){
      Debug.Log("Using Camera One");
      camSwap(1);
     }
     if(Input.GetKey("2")){
      Debug.Log("Using Camera Two");
      camSwap(2);
     }
     if(Input.GetKey("3")){
      Debug.Log("Using Camera Three");
      camSwap(3);
     }
    }
     
    function camSwap(currentCam : int){
     var cameras = GameObject.FindGameObjectsWithTag("cam");
     
     for (var cams : GameObject in cameras){
      cams.GetComponent(Camera).enabled = false;
     }  
     
     var oneToUse : String = "Camera"+currentCam;
     gameObject.Find(oneToUse).GetComponent(Camera).enabled = true;
    }
کد csharp:

//csharp

    using UnityEngine;
    using System.Collections;
     
    public class camControl : MonoBehaviour {
     
     void Update () {
      if(Input.GetKey("1")){
       Debug.Log("Using Camera One");
       camSwap(1);
      }
      if(Input.GetKey("2")){
       Debug.Log("Using Camera Two");
       camSwap(2);
      }
      if(Input.GetKey("3")){
       Debug.Log("Using Camera Three");
       camSwap(3);
      }
     }
     
     void camSwap(int currentCam){
      GameObject[] cameras = GameObject.FindGameObjectsWithTag("cam");
     
      foreach (GameObject cams in cameras){
       Camera theCam = cams.GetComponent<Camera>() as Camera;
       theCam.enabled = false;
      }  
     
      string oneToUse = "Camera"+currentCam;
      Camera usedCam = GameObject.Find(oneToUse).GetComponent<Camera>() as Camera;
      usedCam.enabled = true;
     }
    }
منبع اصلی:
http://promakers.ir/showthread.php?tid=8769
www.unity3dstudent.com/2010/12/switching-cameras-at-runtime/

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی