Soru & Cevap

Unity'de tıkladığım yerde oyun objesi oluşturma

21.04.2020 - 11:21

Unity'de mouse ile tıkladığım yerde bir obje oluşturmak istiyorum ama tıkladığım yerde değil oyun ekranının tam ortasında oluşuyor oyun objesi neyi değiştirmem lazım

 

 Vector3 position = Input.mousePosition;
            position.z = -Camera.main.transform.position.z;
            position = Camera.main.ScreenToViewportPoint(position);

            Instantiate(asteroidPrefab, position, Quaternion.identity);

444 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-92736-1526131259.jpg
malialtunbilek1
22.04.2020 - 07:19

Yanlış metodu kullanmışım ScreenToWorldPoint() metodu yerine 

ScreenToViewportPoint() metodunu kullanmışım. Değiştirince sorun çözüldü.

 

 [SerializeField]
 GameObject oyunobjesi;

void Update()
    {
        if (Input.GetButtonDown("Fire1"))
        {


            Vector3 position = Input.mousePosition;
            position.z = -Camera.main.transform.position.z;
            position = Camera.main.ScreenToWorldPoint(position);

            Instantiate(oyunobjesi, position, Quaternion.identity);
        }

 

picture-92736-1526131259.jpg
malialtunbilek1
22.04.2020 - 07:19

Yanlış metodu kullanmışım ScreenToWorldPoint() metodu yerine 

ScreenToViewportPoint() metodunu kullanmışım. Değiştirince sorun çözüldü.

 

 [SerializeField]
 GameObject oyunobjesi;

void Update()
    {
        if (Input.GetButtonDown("Fire1"))
        {


            Vector3 position = Input.mousePosition;
            position.z = -Camera.main.transform.position.z;
            position = Camera.main.ScreenToWorldPoint(position);

            Instantiate(oyunobjesi, position, Quaternion.identity);
        }

 

picture-279119-1587461397.jpg
dhdemirpolat
22.04.2020 - 08:53

Tıkladığınız yere MainCamera'dan Raycast göndereceksiniz. Çarptığı yerin bilgisini hit olarak aldığınızda Instantiate işlemini bu pozisyon için uygulacaksınız. Aşağıdaki C# kodu bunun için bir örnektir.
 

public GameObject asteroidPrefab;

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        RaycastHit _hit;
        var _ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (Physics.Raycast(_ray, out _hit))
        {
	    GameObject olusturulanObje = (GameObject)Instantiate(asteroidPrefab, _hit.point, Quaternion.identity);
	}
    }
}