Oyun esnasında nesnelere tıklayıp patlatma, nesneleri tutup sürükleme gibi eylemleri gerçekleştirebilmek için nesneyi tanımamız gerekir. Nesneyi tanımak içinde Mouse yada touch ile etkileşime geçmesi gerekir. Bu işlemi Raycast ile gerçekleştiriyoruz. Boş bir sahneye bir adet 2D küp oluşturdum ve 2D Collider atamasını gerçekleştirdim. Şimdi hemen kodlarımı yazıyorum.
RaycastHit2D nesne = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
Bu kod, oyun ekranında mouse imlecinin ucunda bir nesne görürse onu nesne isimli değişkene atayacaktır. Şimdi isterse bunu görme olarak değilde, tıkladığımız zaman algılasın.
if(Input.GetMouseButtonDown(0))
{
RaycastHit2D nesne = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
}
Burada mouse basıldığında, mousenin imleci bir nesnenin üzerindeyse, onu nesne isimli değişkene atadık. İşi bir adım daha taşıyalım ve nesne varsa ismini log ekranına yazdıralım, yoksa bir nesne yok yazdıralım.
if(Input.GetMouseButtonDown(0))
{
RaycastHit2D nesne = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
if(nesne.collider != null)
{
Debug.Log("Nesnenin Adı:" + nesne.transform.name);
}
else{
Debug.Log("Bir Nesneye rastlanmadı");
}
}
Unutmayın, nesnemizi collidera göre tanıyoruz. O nedenle nesneye bu anlatıda 2D anlattım, 2D collider eklemeyi unutmuyoruz. 3D içinse;
if(Input.GetMouseButtonDown(0))
{
RaycastHit nesne;
var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(rayi out nesne))
{
if(nesne.rigidbody != null)
{
Debug.Log(nesne.transform.name);
}
}
}
şeklinde örneklendirebilirz. 3D olarak kullanacağınızda Rigidbody eklemeyi unutmayın.
Bu yazıya henüz bir yorum yapılmamış, hemen bir tane yapmak ister misin ?