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.
Kapıya animasyonu ekleyip çalışma koşulu ekleyeceksin (bool yada trigger) sonra kod üzerinden playerin kapıya yaklaşıp yaklaşmadığını kontrol edeceksin raycast veya collider ile, belli yakınlıktaysa ve mouseye basarsa animasyon koşulunu tetikleyeceksin bu kadar basit.
Örnek olarak collıder kullanarak bir script
Kod:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Door : MonoBehaviour
{
private Animator anim;
private bool kapiAcikmi = false;
private void Start()
{
anim = GetComponent<Animator>();
}
private void OnTriggerStay(Collider other)
{
if (other.gameObject.tag =="Player" && Input.GetMouseButtonDown(0))
{
if (kapiAcikmi) kapiAcikmi = false;
else kapiAcikmi = true;
anim.SetBool("Door", kapiAcikmi);
}
}
}
Bu kodun çalışması için animator de Door diye bir bool oluşturman lazım ve bool false ise kapı kapama animasyonunu true ise kapı açma animasyonunu çalıştıracak şekilde ayarlamalısın.
Ayrıca kapıda trigger seçili collider olması ve karakterinde Player tagi olması gerek.
Kapıya animasyonu ekleyip çalışma koşulu ekleyeceksin (bool ya da trigger) sonra kod üzerinden Player'in kapıya yaklaşıp yaklaşmadığını kontrol edeceksin raycast veya collider ile, belli yakınlıktaysa ve fareye basarsa animasyon koşulunu tetikleyeceksin bu kadar basit.
Örnek olarak collıder kullanarak bir script.
Kod:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Door : MonoBehaviour.
{
private Animator anim;
private bool kapiAcikmi = false;
private void Start()
{
anim = GetComponent<Animator>();
}
private void OnTriggerStay(Collider other)
{
if (other.gameObject.tag =="Player" && Input.GetMouseButtonDown(0))
{
if (kapiAcikmi) kapiAcikmi = false;
else kapiAcikmi = true;
anim.SetBool("Door", kapiAcikmi);
}
}
}
Bu kodun çalışması için animator de door diye bir bool oluşturman lazım ve bool false ise kapı kapama animasyonunu true ise kapı açma animasyonunu çalıştıracak şekilde ayarlamalısın.
Ayrıca kapıda trigger seçili collider olması ve karakterinde Player tagi olması gerek.
Trigger değere bool atamaya çalışıyorsun o yüzden çalışmaz. isOpen diye bool açmışsın onu kullan yani
anim.SetBool("trigger_", isOpen);
yerine
anim.SetBool("isOpen", isOpen);
yaz.
Ayrıca animatorlere parametre eklemişsin ama onu kullanmamışsın. DoorOpen ve DoorClose animasyonları arasında sağ tıklayıp transation ekle biri açılıştan kapanışa diğeri kapanıştan açılışa. Sonra açılışa giden transation'a true değeri ver diğerine false.
Ekstra olarakta objelere collider, rigidbody , tag eklemen lazım çalışması için. İki objede de trigger açık olmasına gerek yok herhangi bir objenin açık olsa yeter.
Ama bunlar çok temel şeyler kapıyı başarsan bile başka bir şey eklerken çok zorlanırsın.
Bence kendi başına yapmayı denemek yerine tutorial videoları izleyerek temelini sağlamlaştır sonra bu tarz eylemleri 1 dakika içinde basitce yapabilecek seviyeye gelirsin.