Unity radar alanı oluşturma

Mçınar

Hectopat
Katılım
5 Ağustos 2019
Mesajlar
461
Şekildeki gibi radar yarıçapı oluşturdum;

Kod:
public float range;
public Transform target;

// Vector2 targetPos = target.position;
 // direction = targetPos - (Vector2)transform.position;
 // RaycastHit2D rayInfo = Physics2D.Raycast(transform.position, direction, range);

Bu yukarıdaki kodun tam çalışma mantığı nedir? Eklemek gerekli mi?
Aşağıda gizmos ile radar yarıçapı oluşturdum. Yukarıdaki kod bununla ilişkili mi?



Kod:
private void OnDrawGizmosSelected()
 {
 Gizmos.DrawWireSphere(transform.position, range);
 }
 
Son düzenleyen: Moderatör:
Alttaki kod yalnızca radarın dairesini oluşturuyor. Üstteki kod ise radarın işe yaraması için gerekli. Yani şu an alttaki tek kalırsa radarın içine bir şey girse bile kontrol edemezsiniz. Üstteki kodu eklerseniz kontrol edebilirsiniz. Kontrol derken mesela radara düşman girerse xx olsun gibi.
 
RayCast, Collider bileşeni olan nesnelerin algılanmasını sağlar.
 

Physic.Raycast verdiğiniz noktadan, verdiğiniz direction doğrultusunda range uzunluğunda bir ışın fırlatır. İki nokta arasındaki direction'u almak için pozisyonları birbirinden çıkartabilirsiniz. POS1 ve POS2 birer nokta olsun. POS2-POS1 işlemi size bu siyah ok şeklinde bir direction (doğrultu) vektörü verir.
Kod şu şekilde çalışıyor. Transform.positionunuzdan hedef noktanıza doğru bir raycast fırlatıyor. Eğer bu bir şeye çarparsa raycasthit infoya bu çarpıştığı cismi, onun çarpışma noktası vs gibi bilgileri aktarıyor.
Alttaki kod sadece verilen yarıçapta bir daire çiziyor hangi kısma kadar raycast atabildiğinizi görün diye eklenmiş
 
Raycast, collider bileşeni olan nesnelerin algılanmasını sağlar.

Nasıl yani hocam şu an Update fonksyonumun içinde collider collision etki yapabiliyor mu? Kodlarımın içine ekledim şu şekilde;

Kod:
 /// /////////////////////////////

 public float range;
 private Transform target;
 Vector2 direction;

 private void Update()
 {
 Vector2 targetPos = target.position;
 direction = targetPos - (Vector2)transform.position;
 RaycastHit2D rayInfo = Physics2D.Raycast(transform.position, direction, range);

 private void OnTriggerEnter2D(Collider2D collision)
 {
...
 /// /////////////////////////////
 
Collsion etkisi yapmaz ama nesneleri algilar.
Ornegin rayinfo.gameObject.name yaparsan, range icinde collideri olan nesnelerin isimlerini alabilirsin.
 
konu_güncel

Collsion etkisi yapmaz ama nesneleri algilar.
Ornegin rayinfo.gameObject.name yaparsan, range icinde collideri olan nesnelerin isimlerini alabilirsin.
public void OnTriggerEnter2D(collider other) gibi mi ?
bunla iligili youtube ne yazıp video bulabilirim ya da yardımcı olabilirsiniz ?
 
Son düzenleme:
konu_güncel


public void OnTriggerEnter2D(collider other) gibi mi ?
bunla iligili youtube ne yazıp video bulabilirim ya da yardımcı olabilirsiniz ?
Benzer ama genelde Raycast sınıfı, olayları ve metotları; radar sistemi gibi çalışır. İki nesneyi çarpıştırmak yerine nesneleri tespit etmek amacıyla kullanıma uygundur.
Radar gibi bir şey.
Bir de FPS oyunlarında çok kullanılır. Düşmanın üzerine lazer tutmak gibi falan...
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…