Kodda "cannot implicitly convert type 'Void' to 'unityengine. Gameobject'" hatası

sıddııık

Centipat
Katılım
31 Ağustos 2022
Mesajlar
272
Daha fazla  
Cinsiyet
Erkek
Cannot implicitly convert type 'Void' to 'unityengine. Gameobject' hatasını alıyorum. Ne yapabilirim?
Kodum;

Kod:
public GameObject ok;
 public int hiz = 5;
 void Start()
 {

 }
 void Update()
 {
 ok = transform.Translate(Vector3.forward * Time.deltaTime * hiz);
 }
 void OnCollisionEnter(Collision collision)
 {
 if(collision.gameObject.tag == "Duvar");
 {
 Destroy(ok);
 }

}
 
Son düzenleyen: Moderatör:
Cannot implicitly convert type 'Void' to 'unityengine. Gameobject' hatasını alıyorum. Ne yapabilirim?
Kodum;

Kod:
public GameObject ok;
 public int hiz = 5;
 void Start()
 {

 }
 void Update()
 {
 ok = transform.Translate(Vector3.forward * Time.deltaTime * hiz);
 }
 void OnCollisionEnter(Collision collision)
 {
 if(collision.gameObject.tag == "Duvar");
 {
 Destroy(ok);
 }

}
Kod:
ok = transform.Translate(Vector3.forward * Time.deltaTime * hiz);
yerine

Kod:
ok.Translate(Vector3.forward * Time.deltaTime * hiz);
veya
Kod:
transform.Translate(Vector3.forward * Time.deltaTime * hiz);

Dene.
Eğer ilkini denersen Unity Editor'de Inspector kısmında ok'un atamasını yaptığından emin ol.
Okun hareket etmesini istiyorsan ilkini, objenin hareket etmesini istiyorsan ikincisini uygula.
 
Kod:
ok = transform.Translate(Vector3.forward * Time.deltaTime * hiz);
yerine

Kod:
ok.Translate(Vector3.forward * Time.deltaTime * hiz);
veya
Kod:
transform.Translate(Vector3.forward * Time.deltaTime * hiz);

Dene.
Eğer ilkini denersen Unity Editor'de Inspector kısmında ok'un atamasını yaptığından emin ol.
Okun hareket etmesini istiyorsan ilkini, objenin hareket etmesini istiyorsan ikincisini uygula.
Yapmak istediğim şey
bandicam 2023-02-05 20-34-00-982.jpg

burada işaretlediğim yeşil renkli "Cube" yani kodda yazan "ok", karşı taraftaki mavi duvara değmesi durumunda yok olsun istiyorum. Nasıl yapabilirim?
 
Yapmak istediğim şey Eki Görüntüle 1658574
burada işaretlediğim yeşil renkli "Cube" yani kodda yazan "ok", karşı taraftaki mavi duvara değmesi durumunda yok olsun istiyorum. Nasıl yapabilirim?
Kod:
public int hiz = 5;
void Start()
{

}
void Update()
{
transform.Translate(Vector3.forward * Time.deltaTime * hiz);
}
void OnCollisionEnter(Collision collision)
{
if(collision.gameObject.tag == "Duvar");
{
Destroy(ok);
}

Duvar objesinin tagi Duvar ise bu kod çalışacaktır.
Hem duvarda hemde yeşil okta Rigidbody bulunması gerekiyor. IsKinematic işaretli olsun.
Ayrıca Edit>Project Settings>Physics kısmında Contact Pairs kısmını Enable All Contact Pairs şeklinde ayarla.
Kodu yazdığın scripti, yeşil oka component olarak eklemeyi unutma.

1675619838165.png
 
Tüm işlemleri yaptım da bu son işlem nedir yani "Contact Pairs Mode" ne oluyor "Enable All Contact Pairs" nedir? Bu işlemler neden gereklidir? Anlamadım.
 
Tüm işlemleri yaptım da bu son işlem nedir yani "Contact Pairs Mode" ne oluyor "Enable All Contact Pairs" nedir? Bu işlemler neden gereklidir? Anlamadım.
O kinematic rigidbody objelerinin çarpışma algılamasını sağlıyor.
Anladığım kadarıyla yeni başlamışsın, sen ok objeni rigidbody yerine transform ile hareket ettirdiğinden dolayı, rigidbody'i kinematic olarak işaretliyoruz sadece collision algılamaya ihtiyacımız var çünkü.
 

Geri
Yukarı