3B Nesne Düzenleme - Sahne Hazırlama

Bu öğretici , 3B Nesne Düzenleme öğreticisi için bir hazırlık görevi görür. Bu öğreticide, 3B görünümdeki nesneleri taşıyabilen fare denetimli bir imleç oluşturmak için mevcut Unity özelliklerini kullanacağız. 3B Nesne Düzenleme öğreticisinde, el hareketleri ve hareketler için fare giriş cihazını değiştireceğiz.

Unity ile hareketleri kullanmayı öğrenmek istiyorsanız , 3B Nesne Düzenleme öğreticisine geçmekte serbestsiniz.

Bu öğreticinin tamamlanması yaklaşık 30 dakika sürer.

Nihai Sonucu İndirme

Bu öğreticide elde edilen unity projesinin son hali GitHub'daki açık kaynak örnekleri depomuzda bulunabilir. Depoyu kopyaladıktan sonra uygulamayı çalıştırmak için şu adımları izleyin:

  1. Unity'yi başlatın, Projeler sekmesinde Aç'ı seçin.
  2. Kopyalanan depodaki Unity\Tutorials\3D Nesne İşleme - Sahne Hazırlama dizinine göz atın.
  3. Sahneyi çalıştırmak için oynat düğmesine (veya Ctrl+P) basın.

Önkoşullar

Bu öğreticide C# programlama dili hakkında temel bilgi sahibi olduğunuz ve Unity ortamıyla ilgili bazı deneyimler edindiğiniz varsayılır. Unity projeleri, sahneleri, oyun nesneleri ve betikleri oluşturmayı bildiğinizi varsayıyoruz.

Bu öğreticiye başlamadan önce Giriş öğreticisini tamamlamanızı öneririz.

1. Adım - İmleç Oyunu Nesnesi Oluşturma

  1. Giriş öğreticisini tamamladıysanız, bu öğreticide oluşturduğunuz projeyi açın ve yeni bir sahne oluşturmak için Ctrl+N tuşlarına basın. Aksi takdirde, yeni bir Unity projesi oluşturun ve Project Prag for Unity araç setini içeri aktarın (yönergeler için giriş öğreticisindeki 1. adıma bakın).

  2. Sahneyi 3B Nesne Düzenleme olarak adlandırarak kaydetmek için Ctrl+S tuşlarına basın.

  3. Boş bir oyun nesnesi oluşturun ve İmleç olarak adlandırin. Aynı ada sahip karşılık gelen bir C# betiği oluşturun. Oyun nesnesini betikle ilişkilendirmek için oyun nesnesinin Denetçi görünümüne gidin ve betiği Bileşen Ekle düğmesinin altındaki boş alana sürükleyin (bir betiği bir oyun nesnesiyle ilişkilendirme hakkında bilgi edinmek için giriş öğreticisindeki 3. adıma bakın).

  4. Visual Studio'da İmleç betiğini açın ( Proje penceresinde betik simgesine çift tıklayın) ve içeriğini aşağıdaki kodla değiştirin:

    Uyarı

    Aradığınız örnek başka bir yere taşınmış gibi görünüyor! Bu sorunu çözmek için çalıştığımızdan emin olabilirsiniz.

    Gördüğünüz gibi İmleç yöntemlerinden hiçbiri uygulanmaz. Şimdilik yer tutucular ve yorumlar içeriyorlar.

  5. İmlecin fare işaretçisini izlemesini sağlamak için, Cursor.cs dosyasındaki GetCursorScreenPosition() yöntemini aşağıdaki içerikle değiştirin:

    Uyarı

    Aradığınız örnek başka bir yere taşınmış gibi görünüyor! Bu sorunu çözmek için çalıştığımızdan emin olabilirsiniz.

    Ekran her yenilendiğinde imleci doğru konuma çizmek için, Cursor.csdosyasındaki OnGUI() yönteminin içeriğini şununla değiştirin:

    Uyarı

    Aradığınız örnek başka bir yere taşınmış gibi görünüyor! Bu sorunu çözmek için çalıştığımızdan emin olabilirsiniz.

  6. Unity için Prag Projesi araç seti ile sağlanan PragueCursor.png dokuyu imleç görüntümüz olarak kullanacağız. Hiyerarşi penceresinde İmleç oyunu nesnesini seçin, Proje penceresinde MicrosoftGesturesToolkit/Textures altındaki PragueCursor.png bulun ve Denetçipenceresindeki İmleç Görüntüsü kutusuna sürükleyip bırakın:

    İmleç Görüntüsünü Ayarla

  7. Sahneyi şimdi oynatın. Fare işaretçisi sahne kenarlıklarının içinde olduğunda, onu izleyen kırmızı bir imleç görürsünüz:

    fareyi izleyen imleç

2. Adım - İmleç altında Nesneyi Vurgulama

İmlecimizi kullanarak sahnedeki nesneleri taşımak istiyoruz. İmlecin altında bulunan nesneyi tanımak için bu nesnenin ana hattını vurgulayacağız.

  1. Sahneyi birkaç temel nesneyle doldurarak başlayın. Kolaylık sağlamak için, sahneye yeni temel öğeler eklemeden önce Ana Kamera'nın bakış açısına ulaşmanızı öneririz: Hiyerarşi penceresinde Ana Kamerayı seçin, GameObject menüsüne gidin ve Görünümü Seçiliye Hizala'yı seçin.

    Yeni temel öğeleri örneklemek için GameObject menüsüne yeniden gidin, 3B Nesne'yi seçin ve alt menüdeki temel öğelerden birini (Küp, Sphere vb.) seçin. Her yeni ilkel öğeyi sahnede farklı bir konuma taşıyarak bu işlemi birkaç kez tekrarlayın:

    Sahneyi ilkel öğelerle doldurma

    İpucu

    Nesneyi taşımak için nesneye tıklayın, w tuşuna basın ve ardından Taşı gizmo'sunu kullanarak sürükleyin.

  2. İmleç sınıfına özel bir üye ekleyin. Şu anda imlecin altında bulunan oyun nesnesini depolamak için bu üyeyi kullanacağız. Bu nesneye "vurgulanan nesne" olarak başvuracağız:

    Uyarı

    Aradığınız örnek başka bir yere taşınmış gibi görünüyor! Bu sorunu çözmek için çalıştığımızdan emin olabilirsiniz.

    Ayrıca aşağıdaki genel üyeleri ekleyin. Bunları yakında vurgulama özelliğini uygulamak için kullanacağız.

    Uyarı

    Aradığınız örnek başka bir yere taşınmış gibi görünüyor! Bu sorunu çözmek için çalıştığımızdan emin olabilirsiniz.

    İmlecin altında şu anda hangi nesnenin olduğunu belirlemek için GetHoveredObject() yönteminin içeriğini aşağıdaki uygulamayla değiştirin:

    Uyarı

    Aradığınız örnek başka bir yere taşınmış gibi görünüyor! Bu sorunu çözmek için çalıştığımızdan emin olabilirsiniz.

    Vurgulanan nesneyi vurgulamak için Update() içeriğini aşağıdakilerle değiştirin:

    Uyarı

    Aradığınız örnek başka bir yere taşınmış gibi görünüyor! Bu sorunu çözmek için çalıştığımızdan emin olabilirsiniz.

    Cursor.cs betiğindeki tüm değişiklikleri kaydedin.

  3. Hiyerarşi penceresinde İmleç oyunu nesnesini seçin. Proje penceresinde MicrosoftGesturesToolkit/Materials altındaki OuterGlow.mat malzemesini bulun. OuterGlow.mat dosyasını Sürükleyip Denetçi penceresindeki Malzemeyi Vurgula kutusuna bırakın:

    Vurgulama malzemesini ekleme

  4. Sahneyi oynatın ve imleci ekranda hareket ettirin. Bir nesne imlecin altında her olduğunda, ana hattı mavimsi bir aura ile parlar:

    Parlama efektiyle sahneyi oynatma

3. Adım - Vurgulanan Nesneyi Taşı

Bu adımda, imlecimizin bir nesneyi "yakalamasını" ve boşlukta taşımasını etkinleştireceğiz.

  1. Cursor.cs betiğinde aşağıdaki özel üyeleri hazırlayın:

    Uyarı

    Aradığınız örnek başka bir yere taşınmış gibi görünüyor! Bu sorunu çözmek için çalıştığımızdan emin olabilirsiniz.

    Ve aşağıdaki genel Üye:

    Uyarı

    Aradığınız örnek başka bir yere taşınmış gibi görünüyor! Bu sorunu çözmek için çalıştığımızdan emin olabilirsiniz.

  2. OnGUI() yöntemi içeriğini aşağıdakilerle değiştirin:

    Uyarı

    Aradığınız örnek başka bir yere taşınmış gibi görünüyor! Bu sorunu çözmek için çalıştığımızdan emin olabilirsiniz.

    Bu, imlecin "yakalama moduna" girdiğinde rengi GrabCursorTint olarak değiştirmesine neden olur.

  3. Artık StartGrab() ve StopGrab() yöntemlerini uygulamaya hazırız:

    Uyarı

    Aradığınız örnek başka bir yere taşınmış gibi görünüyor! Bu sorunu çözmek için çalıştığımızdan emin olabilirsiniz.

  4. Update() yönteminde aşağıdaki işlevleri eklemek istiyoruz:

    • Bir nesne üzerine gelinirken sol fare düğmesine her basıldığında (serbest bırakıldığında) yakalama moduna girin (bırakın).
    • Yakalama modundayken, üzerine gelinen nesne imleci izlemelidir.

    Bunu başarmak için Update() yöntemini aşağıdaki gibi değiştirin:

    Uyarı

    Aradığınız örnek başka bir yere taşınmış gibi görünüyor! Bu sorunu çözmek için çalıştığımızdan emin olabilirsiniz.

  5. Sahneyi şimdi çalıştırın, bir nesnenin üzerine gelin ve sol fare düğmesine basıp sürükleyerek nesneyi hareket ettirin. Yakalama moduna girdiğinizde imlecin renginin değiştiğini unutmayın:

    Sahneyi yakalama moduyla oynatma

  6. Kapılmış nesnenin derinlik boyutunda hareketini denetlemek için kaydırma tekerleğini kullanacağız.

    GetCursorDistanceScalingFactor() içeriğini aşağıdakilerle değiştirin:

    Uyarı

    Aradığınız örnek başka bir yere taşınmış gibi görünüyor! Bu sorunu çözmek için çalıştığımızdan emin olabilirsiniz.

  7. Sahneyi çalıştırmayı şimdi deneyin. Kapılmış nesneyi üç boyutta da taşıyabilmeniz, kaydırma tekerleğini kullanarak radyal yönde hareket ettirebilmeli veya kameradan uzaklaştırabilmelisiniz.