Unity ile bakılan yöne blok ekleme

Katılım
5 Mart 2014
Mesajlar
5.701
Makaleler
12
Çözümler
44
C#:
        else if (Input.GetMouseButtonUp(1))
        {
            Ray SendLight = GameObject.Find("Kamera").GetComponent<Camera>().ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(SendLight, out Block))
            {
                Instantiate(Grass, new Vector3(Block.collider.gameObject.transform.position.x, Block.collider.gameObject.transform.position.y + 1, Block.collider.gameObject.transform.position.z), Quaternion.identity);
            }
        }

Bu kodu çalıştırdığımda fare ile sol tıklanınca blok, altındaki bloğun üzerine ekliyor. Buraya kadar sorun yok fakat örneğin yanına veya altına blok eklemeye çalışırken de üstüne ekliyor.

Nedenini biliyorum fakat nasıl çözeceğimi bilmiyorum. Örneğin imleç, bloğun hangi yönüne bakıyor ise o yöne blok eklemek istiyorum. Bu kodu nasıl yazarım?
 
" Block.collider.gameObject.transform.position.y + 1 " kodunda +1 koymanız anladığım kadarıyla Y ekseninde olmasını ayarlıyor. Diğer eksenler de +1 koymamışsınız onunla alakadar bir durum olabileceğini düşünüyorum.
 
"Block.collider.gameObject.transform.position.y + 1" kodunda +1 koymanız anladığım kadarıyla Y ekseninde olmasını ayarlıyor. Diğer eksenler de +1 koymamışsınız onunla alakadar bir durum olabileceğini düşünüyorum.
Bu kod bloğun üzerine blok eklemeyi sağlıyor. Hepsine +1 eklersem bloğun belirli yönüne blok eklenir. Örneğin altına veya diğer yanlarına eklenmez.
 
C#:
        else if (Input.GetMouseButtonUp(1))
        {
            Ray SendLight = GameObject.Find("Kamera").GetComponent<Camera>().ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(SendLight, out Block))
            {
                Instantiate(Grass, new Vector3(Block.collider.gameObject.transform.position.x, Block.collider.gameObject.transform.position.y + 1, Block.collider.gameObject.transform.position.z), Quaternion.identity);
            }
        }

Bu kodu çalıştırdığımda fare ile sol tıklanınca blok, altındaki bloğun üzerine ekliyor. Buraya kadar sorun yok fakat örneğin yanına veya altına blok eklemeye çalışırken de üstüne ekliyor.

Nedenini biliyorum fakat nasıl çözeceğimi bilmiyorum. Örneğin imleç, bloğun hangi yönüne bakıyor ise o yöne blok eklemek istiyorum. Bu kodu nasıl yazarım?
Şuan bu kodda mouse collider dışında tıklamayı bırakırsa o bıraktığı coliderin y sinin üstüne 1 ekleyip yeni pozisyonda grass oluşturuyor ama nerede bıraktığının önemi yok her şekilde y+1 oluyor.
Yapman gereken önce mouse pozisyonunun o objenin neresinde olduğunu bulmak daha sonra Y yerine hangi pozisyondaysa +1 i ona eklemek.
Örnek
C#:
If(SendLight.transform.position.x > Block.gameobject.transform.position.x)
instantiate(...transform.position.x+1,...transform.position.y,...transform.position.z)
If(SendLight.transform.position.y > Block.gameobject.transform.position.y)
instantiate(...transform.position.x,...transform.position.y+1,...transform.position.z)
Ama eğer minecraft tarzı bir şey yapmaya çalışıyorsan bunun yerine grid sistemini kullanmanı öneririm.
 

Technopat Haberler

Yeni konular

Geri
Yukarı