Unity 2D kılıç düşmana değdiğine kılıcın boyunun uzaması nasıl yapılır?

Kernel60Hz

Decapat
Katılım
22 Nisan 2023
Mesajlar
231
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
İstediğim şeyi bir türlü yapamadım. Oyuncunun kılıcı düşmana değdiği zaman kılıç yukarıya doğru (yani +y) 1 değer uzasın, bu her düşmana değdiğinde tekrar etsin.
 
Son düzenleyen: Moderatör:
Kılıca bir script atayın. Ardından düşmana bir tag ekleyin ve kodda da oncollisionenter2D'nın içinde compare tag ile çarpan nesnenin düşman olduğundan emin olun, ve transform. Translate kullanarak kılıcın ysini arttırın. Kod burada:
C#:
using UnityEngine;


public class KılıçKontrol : MonoBehaviour
{
    public float kılıçUzunluğu = 1f; // Kılıç uzunluğu, istediğiniz değeri ayarlayabilirsiniz.


    private void OnCollisionEnter2D(Collision2D collision)
    {
        // Çarpışan nesnenin "Düşman" etiketine sahip olup olmadığını kontrol et
        if (collision.gameObject.CompareTag("Düşman"))
        {
            // Kılıcı yukarı doğru kaydır
            Vector3 yeniPozisyon = transform.position + new Vector3(0f, kılıçUzunluğu, 0f);
            transform.position = yeniPozisyon;
        }
    }
}

Bu kodu kendiniz düzenleyebilirsiniz.
 
Kılıca bir script atayın. Ardından düşmana bir tag ekleyin ve kodda da oncollisionenter2D'nın içinde compare tag ile çarpan nesnenin düşman olduğundan emin olun, ve transform. Translate kullanarak kılıcın ysini arttırın. Kod burada:
C#:
using UnityEngine;


public class KılıçKontrol : MonoBehaviour
{
    public float kılıçUzunluğu = 1f; // Kılıç uzunluğu, istediğiniz değeri ayarlayabilirsiniz.


    private void OnCollisionEnter2D(Collision2D collision)
    {
        // Çarpışan nesnenin "Düşman" etiketine sahip olup olmadığını kontrol et
        if (collision.gameObject.CompareTag("Düşman"))
        {
            // Kılıcı yukarı doğru kaydır
            Vector3 yeniPozisyon = transform.position + new Vector3(0f, kılıçUzunluğu, 0f);
            transform.position = yeniPozisyon;
        }
    }
}

Bu kodu kendiniz düzenleyebilirsiniz.

Bu kodu event driven yazmak mumkun mu?

Unity bilmiyorum, sadece meraktan soruyorum.

Her carpisma olayinda tag controlu yapmaktansa, benim istedigim carpisma oldugunda Unity bir fonksiyonu kendi cagirsa?
 
Bu kodu Event driven yazmak mumkun mu?

Unity bilmiyorum, sadece meraktan soruyorum.

Her carpisma olayinda tag Control'u yapmaktansa, benim istedigim carpisma oldugunda Unity bir fonksiyonu kendi cagirsa?

O zaman compare tag yerine direk bir fonksiyonla yapın. Ya da çarpan şeyin adı ile de olabilir.
 
Uzama CD'si ekle yoksa bir müddet sonra kılıç çok uzadığı için performans sorunları, map dışına taşarsa da bug, glitch v.s olabilir Unity bu. Misal çatışma dışında kaldığın her saniye kılıç tekrar kısalsın.
 
O zaman compare tag yerine direk bir fonksiyonla yapın. Ya da çarpan şeyin adı ile de olabilir.

Yok, farkli bir seyle compare etsek dahi her collision icin bu yapilmis olacak, yine event driven olmuyor. Soyle bir sey mumkun mu:

Kod:
function dusmanCollision(){
// sadece dusman ile collision olundugunda Unity trigger ediyor.
}
Collision.subscribe("dusman", dusmanCollision );
 
Yok, farkli bir seyle compare etsek dahi her collision icin bu yapilmis olacak, yine Event driven olmuyor. Soyle bir şey mumkun mu:

Kod:
function dusmanCollision(){
// sadece dusman ile collision olundugunda Unity trigger ediyor.
}
Collision.subscribe("dusman", dusmanCollision );

Değil diye biliyorum çünkü Unity de yanlış bilmiyorsam her collisiona bakmalı. Çünkü dediğiniz olsaydı kimse diğer şeylerle uğraşmazdı .
 
Kılıca bir script atayın. Ardından düşmana bir tag ekleyin ve kodda da oncollisionenter2D'nın içinde compare tag ile çarpan nesnenin düşman olduğundan emin olun, ve transform. Translate kullanarak kılıcın ysini arttırın. Kod burada:
C#:
using UnityEngine;

public class KılıçKontrol : MonoBehaviour.
{
 public float kılıçUzunluğu = 1f; // Kılıç uzunluğu, istediğiniz değeri ayarlayabilirsiniz.

 private void OnCollisionEnter2D(Collision2D collision)
 {
 // Çarpışan nesnenin "Düşman" etiketine sahip olup olmadığını kontrol et.
 if (collision.gameObject.CompareTag("Düşman"))
 {
 // Kılıcı yukarı doğru kaydır.
 Vector3 yeniPozisyon = transform.position + new Vector3(0f, kılıçUzunluğu, 0f);
 transform.position = yeniPozisyon;
 }
 }
}

Bu kodu kendiniz düzenleyebilirsiniz.
Merhaba script istediğim gibi teşekkürler ama kılıç uzamıyor yukarı gidiyor ben uzamasını istiyorum.
 

Technopat Haberler

Yeni konular

Geri
Yukarı