Farenin tıklatıldığı nesneyi silmeye çalışıyorum. Yeni Unity3D 4.3 kullanarak bir 2D oyun yapıyorum. İşte ben kullanıyorum kod iç iç döngü girmiyor. (isHit
, false olarak ayarlanmıyor).Birlik içinde mouseclick bulmak için Raycasting Birlik içinde nesne 2d oyunlar
cevap
İç içe girebilmek için önce nesnenizle bir örgü çarpıştırıcısı (herhangi bir çarpıştırıcı) iliştirmelisiniz. Sonra, sadece işi yapacak olan
.
Burada başka bir çalışma olabilir.
void Update() {
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray,out hit))
{
if(Input.GetMouseButtonDown(0))
{
isHit = false;
Destroy(hit.collider.gameObject);
}
}
}
Yeni 2D malzemelerde 3B fizik işlevlerini kullanamazsınız. Bunun yerine 2D functions kullanın. Örnek:
RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
if(hit.collider != null)
{
Debug.Log ("Target Position: " + hit.collider.gameObject.transform.position);
}
Bu soru biraz eski ama birlik 2B'de bir fare tıklaması ile bir GameObject almak için aa yol arıyordu ve Esa gelen cevap neredeyse bana yardımcı ama yetmeyeceğini Çalışmak için, biraz araştırma ile Camera.main.ScreenToWorldPoint'in kamera ekranının ortasını döndürdüğünü ve doğru çalıştığını gördüm. kameradaki Z pozisyonu ile en yakın GameObject arasındaki farkı girmek zorundaydı. Kameram varsayılan olarak -10 olarak ayarlandı ve GameObject 0'daydı, bu yüzden tüm yapmanız gereken Input.mousePosition.z'imi 10'a ayarlamaktır. Yani Esa'nın kodu ile çalışmakta sorun yaşıyorsanız (benim gibi :() kod feryat size yardımcı olabilir:
RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 10)), Vector2.zero);
if(hit.collider != null)
{
Debug.Log ("Target Position: " + hit.collider.gameObject.transform.position);
}
Önce GameObject 2D çarpıştırıcılarının türlü takmak, daha sonra bu çözümlerden birini seçmek;
1 Vaka - her üstünde 1'den fazla GameObject varsa diğer, ve anlamaya çalıştığınızda, belirli GameObject tıklanır:
2. Durum - I f sadece 1 GameObject var ve tıklanmış olup olmadığını anlamaya çalışın:
void Update()
{
if (Input.GetMouseButtonDown (0)) {
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
RaycastHit2D hit = Physics2D.GetRayIntersection (ray, Mathf.Infinity);
if (hit.collider != null && hit.collider.name == name) {
MyFunction();
}
}
}
- 1. Birlik 2D sağlık çubuğu
- 2. Bir birlik içinde mirasın kullanılması
- 3. Birlik: Unity3D içinde HTTP PUT kullanın
- 4. Nesne enjeksiyonu Birlik yığın yığılmasına neden
- 5. Birlik 3d nesne sahnede gecikmeden sonra gösterilecek
- 6. Birlik kayıt örneği ve
- 7. birlik içinde gelen kutusundan gelen sms'leri kontrol etme veya okuma
- 8. Birlik, Global Olay, Global Dinleyici veya GM.Find() İş parçacığı içinde
- 9. birlik veya unity.mvc4
- 10. Birlik animasyonlu şerit efekti
- 11. Birlik kapta Sözlük çözülemiyor
- 12. Birlik Çapraz Hareketi Çalışmıyor
- 13. Video Ben Unity woking videoyla oynamak için Birlik kodu eklemiş birlik
- 14. Birlik iOS yapısı, oyunum IAP
- 15. SQL koşullu birlik
- 16. Hareket birlik başladığında karakter titreşir
- 17. Android için Birlik için minimum gereksinimler?
- 18. Birlik: tip LogWriter aşağıdaki "proje" için
- 19. Birlik diğer GameObject betiğini bulamıyor
- 20. Birlik Birden Çok Sınıfı Çözümleme
- 21. mysql - birlik içeren görünüm oluşturulamıyor
- 22. Proje-Tango | Birlik Meshing uygulaması
- 23. Yumurtlama oyun nesnesi birlik (C#)
- 24. Varsayılan params ile birlik kurucu
- 25. HashTable İçinde Bulmak için Yöntem
- 26. Birlik, çocuğu çocuklara ekleyin, ancak en üstte
- 27. Komut satırından birlik oluşturma sahne yolunu ayarlama
- 28. Nesne içinde nesneye nesne ekleme
- 29. AForge İçinde Dikdörtgen İçinde Daire Bulmak
- 30. Unity visual studio ile birlik gölgelendiricileri kodlama
Nesnede bir çarpıştırıcı var mı? Bir çarpıştırıcı ve sert bir gövdesi var mı? –
Evet, bir çarpıştırıcı ve bir sert kullanıcı içerir –
Ben Physics2D kullanıyorum ve işe yarıyor! Bu değiştirilmiş kod Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition); Vector2 orgin = yeni Vector2 (ray.origin.x, ray.origin.y); RaycastHit2D hit = Fizik2D.Linecast (orgin, -Vector2.up, 1 << LayerMask.NameToLayer ("Supports")); Destroy (hit.collider.gameObject); i başka yerlerde tıkladığınızda bile nesne silindiğinde Ama şimdi .. ben bunu kullanması gereklidir yönü ?? etmek .. sorun raycast yönü -Vector2.up olmak olduğunu düşünüyorum –