Soru & Cevap

Unity noktasal hareket?? (Point motion)

08.08.2017 - 08:00

Merhaba hocam ben unityde bir proje yapiyorum. Bu projede hareket etmesi için bir kac objeye kod yazdım.Bu kod objeler bulunduklari noktadan her obje kendi karşısındaki noktaya hareket edecek objeler bulundukları noktaya rasgele (Random) olarak spawnlaniyor, ama kodum çalışmıyor denemek için if fonksiyonun icine Debug. Log ( "Hareket etti" ) yazdığım bu ifade de gözükmüyor yani if fonsiyonu çalışmıyor Lütfen Yardimci olurmusunuz. Yazdığım noktasal hareket kodu soyleydi publicTransform []nokta1; Public Transform [] nokta2; Public float hız=10; Void Update ( ) { if(transform.position==nokta1[0].position) { Debug.Log ( hareket etti ); Transform. position=Vector3. MoveTowards (Transform. position,nokta1[1] position,hız*time.deltaTime ); } if(transform.position==nokta2[ 0].position) { Debug.Log ( hareket etti ); Transform. position=Vector3. MoveTowards (Transform. position,nokta2[1] position,hız*time.deltaTime ); } Objelerin herbirinin karşısındaki noktaya hareket etmesini istiyorum. Consol penceresinden hata almıyorum ama kod calismiyor. Lütfen Acil yardım edin.?

72 Görüntülenme

1 Cevap

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

Profile picture for user gmyucalfarukeren
gmyucalfarukeren
22.02.2023 - 01:16

Merhaba hocam,

Sorunuzu inceledim ve kodunuzdaki birkaç potansiyel sorunu tespit ettim. İlk olarak, "hareket etti" dizesi, tırnak içinde olmadığı için bir sözdizimi hatası oluşturuyor. Bu nedenle, "hareket etti" ifadesinin tırnak içinde olması gerekiyor. Ayrıca, Transform. position yerine transform.position kullanmanız gerekiyor

Ayrıca, kodunuzdaki ikinci koşul (if bloğu), sadece nokta2[0] pozisyonuna ulaştığında çalışacaktır. Ancak, bu koşul, sadece nokta1[0] pozisyonuna ulaştığında çalışmalıdır. Bu nedenle, kodunuzu şu şekilde güncellemeniz gerekiyor

 

public Transform[] nokta1;
public Transform[] nokta2;
public float hız = 10;

void Update()
{
    if (transform.position == nokta1[0].position)
    {
        Debug.Log("Hareket etti");
        transform.position = Vector3.MoveTowards(transform.position, nokta1[1].position, hız * Time.deltaTime);
    }
    else if (transform.position == nokta1[1].position)
    {
        Debug.Log("Hareket etti");
        transform.position = Vector3.MoveTowards(transform.position, nokta1[0].position, hız * Time.deltaTime);
    }
    else if (transform.position == nokta2[0].position)
    {
        Debug.Log("Hareket etti");
        transform.position = Vector3.MoveTowards(transform.position, nokta2[1].position, hız * Time.deltaTime);
    }
    else if (transform.position == nokta2[1].position)
    {
        Debug.Log("Hareket etti");
        transform.position = Vector3.MoveTowards(transform.position, nokta2[0].position, hız * Time.deltaTime);
    }
}