Son kullanma tarihi geçmiş, bayatlamış bir tarayıcı kullanıyorsanız, Mercedes kullanmak yerine tosbağaya binmek gibi... Web sitelerini düzgün görüntüleyemiyorsanız eh, bi' zahmet tarayıcınızı güncelleyiniz. Modern Web standartlarını karşılayan bir tarayıcı alternatifine göz atın.
C#Unity'de iki düşmanın birbirine saldırması nasıl engellenir?
Örneğin: İki iskeleti yan yana koyuyorum birbirlerini görüp saldırmaya başlıyorlar birbirlerine ama hasar vuramıyorlar çünkü sadece Player tagına hasar veriyorlar. Ama sorun birbirlerine saldırıyormuş gibi animasyon çıkması ve birbirlerine kilitlenmeleri. Nasıl çözebilirim?
Kodları görmeden net bir yorum yapmak zor ancak fikir yürüterek şunları söyleyebilirim:
Eğer iskeletlerin özel bir katmanı(layer) varsa (örneğin enemy) birbirleriyle etkileşime girmesini engelleyebilirsiniz ancak bu durumda iskeletler birbirinin içinden geçecektir. Bunu yapmak için "Edit > Project Settings > Physics" kısmına gidin. "Layer Collision Matrix" kısmında iskeletin katmanını bulun ve tabloda kendisine denk gelen kutunun işaretini kaldırın.
Bir diğer yöntem olarak kodda değişiklik yapabilirsiniz. İskeletlerin hedef tespiti ve animasyon geçişi yapan kodlarını " if " sorgusuna alabilirsiniz. Örneğin OnCollisionEnter kodunu kullandığınızı varsayalım:
Tag kullanmak istiyorsanız:
C#:
if(collision.gameObject.tag == "player")
{
//DÜŞMANA KİLİTLEN VE SALDIR
}
Layer kullanmak istiyorsanız:
C#:
if (collision.gameObject.layer == LayerMask.NameToLayer("player"))
{
//DÜŞMANA KİLİTLEN VE SALDIR
}
Kodları görmeden net bir yorum yapmak zor ancak fikir yürüterek şunları söyleyebilirim:
Eğer iskeletlerin özel bir katmanı(layer) varsa (örneğin enemy) birbirleriyle etkileşime girmesini engelleyebilirsiniz ancak bu durumda iskeletler birbirinin içinden geçecektir. Bunu yapmak için "Edit > Project Settings > Physics" kısmına gidin. "Layer Collision Matrix" kısmında iskeletin katmanını bulun ve tabloda kendisine denk gelen kutunun işaretini kaldırın.
Bir diğer yöntem olarak kodda değişiklik yapabilirsiniz. İskeletlerin hedef tespiti ve animasyon geçişi yapan kodlarını " if " sorgusuna alabilirsiniz. Örneğin OnCollisionEnter kodunu kullandığınızı varsayalım:
Tag kullanmak istiyorsanız:
C#:
if(collision.gameObject.tag == "player")
{
//DÜŞMANA KİLİTLEN VE SALDIR
}
Layer kullanmak istiyorsanız:
C#:
if (collision.gameObject.layer == LayerMask.NameToLayer("player"))
{
//DÜŞMANA KİLİTLEN VE SALDIR
}
Kodları görmeden net bir yorum yapmak zor ancak fikir yürüterek şunları söyleyebilirim:
Eğer iskeletlerin özel bir katmanı(layer) varsa (örneğin enemy) birbirleriyle etkileşime girmesini engelleyebilirsiniz ancak bu durumda iskeletler birbirinin içinden geçecektir. Bunu yapmak için "Edit > Project Settings > Physics" kısmına gidin. "Layer Collision Matrix" kısmında iskeletin katmanını bulun ve tabloda kendisine denk gelen kutunun işaretini kaldırın.
Bir diğer yöntem olarak kodda değişiklik yapabilirsiniz. İskeletlerin hedef tespiti ve animasyon geçişi yapan kodlarını " if " sorgusuna alabilirsiniz. Örneğin OnCollisionEnter kodunu kullandığınızı varsayalım:
Tag kullanmak istiyorsanız:
C#:
if(collision.gameObject.tag == "player")
{
//DÜŞMANA KİLİTLEN VE SALDIR
}
Layer kullanmak istiyorsanız:
C#:
if (collision.gameObject.layer == LayerMask.NameToLayer("player"))
{
//DÜŞMANA KİLİTLEN VE SALDIR
}