Unity bir alana gelince panel açılması nasıl yapılabilir?

etpirexx

Centipat
Katılım
28 Eylül 2022
Mesajlar
26
Daha fazla  
Cinsiyet
Erkek
Unity ile oyun yapıyorum iki ayrı geçit var, geçitlerden birisinden gidince diğer levela geçilecek. Diğerinden geçilirse deathpanel açılacak. Deathpaneli yaptım fakat nasıl o alandan geçtikten sonra panelin açılacağını bulamadım.
 
Unity ile oyun yapıyorum iki ayrı geçit var, geçitlerden birisinden gidince diğer levela geçilecek. Diğerinden geçilirse deathpanel açılacak. Deathpaneli yaptım fakat nasıl o alandan geçtikten sonra panelin açılacağını bulamadım.

Merhaba, bir objeye eklenen ve belirli bir alana girildiğinde etkinleşen bir şey yapmak istiyorsunuz anladığım kadarıyla. Böyle bir senaryo için genellikle bir “trigger” kullanabilirsin.
 
Merhaba, bir objeye eklenen ve belirli bir alana girildiğinde etkinleşen bir şey yapmak istiyorsunuz anladığım kadarıyla. Böyle bir senaryo için genellikle bir “trigger” kullanabilirsin.
OnTrigger2D kullanacağım yani anladığım kadarıyla. Teşekkür ederim.
 
Ontrigger2D kullanacağım yani anladığım kadarıyla. Teşekkür ederim.

Basit bir kod göndereceğim size.

İki geçit içinde gameobject oluşturun her iki obje için BoxCollider ekleyin trigger seçeneğini işaretleyin. Oyuncu karakteri varsa eğer bir tag atarsınız.


public class PortalTrigger : MonoBehaviour
{
public bool isDeathPanel = false;

private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
if (isDeathPanel)
{
// Death paneli aktif et
DeathPanel.SetActive(true);
}
else
{
// Diğer levele geç
SceneManager.LoadScene("NextLevelName");
}
}
}
}
——
Death panel için olan scriptinde panel özelliğini true olarak işaretleyin.
Death panelin aktif edilmesi gereken objeyi, script içinde tanımlanmış panel değişkenine sürükleyip bırakın. Bu şekilde işinizi görür diye düşünüyorum. İyi çalışmalar. 😊
 
Son düzenleme:
Basit bir kod göndereceğim size.

Basit bir kod göndereceğim size.

İki geçit içinde gameobject oluşturun her iki obje için BoxCollider ekleyin trigger seçeneğini işaretleyin. Oyuncu karakteri varsa eğer bir tag atarsınız.


public class PortalTrigger : MonoBehaviour
{
public bool isDeathPanel = false;

private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
if (isDeathPanel)
{
// Death paneli aktif et
DeathPanel.SetActive(true);
}
else
{
// Diğer levele geç
SceneManager.LoadScene("NextLevelName");
}
}
}
}
——
Death panel için olan scriptinde panel özelliğini true olarak işaretleyin.
Death panelin aktif edilmesi gereken objeyi, script içinde tanımlanmış panel değişkenine sürükleyip bırakın. Bu şekilde işinizi görür diye düşünüyorum. İyi çalışmalar. 😊
Sağolun hocam.
 
Ne demek. Sorunuz olursa yardımcı olmaya çalışırım yine. 🙏🏼

Hocam
Assets\Scripts\PortalTrigger.cs(16,17): error CS0103: The name 'DeathPanel' does not exist in the current context

Adında hata alıyorum galiba o scripti oluşturmadığım için. Ben Deathpaneli canvastan yaptığım için büyük bir ihtimal. Nasıl düzeltirim?
 
Son düzenleme:
Hocam
Assets\Scripts\PortalTrigger.cs(16,17): error CS0103: The name 'DeathPanel' does not exist in the current context

Assets\Scripts\PortalTrigger.cs(21,33): error CS0117: 'SceneManagement' does not contain a definition for 'LoadScene'

Adında iki hata alıyorum galiba o scriptleri oluşturmadığım için. Ben Deathpaneli canvastan yaptığım için büyük bir ihtimal. Nasıl düzeltirim?
DeathPanel ve SceneManager.LoadScene fonksiyonlarıyla ilgili hatalar alıyorsun çünkü DeathPanel değişkenini tanımlamamışsın ve SceneManager‘ın doğru şekilde kullanılması için gerekli olan namespace’i dahil etmen gerekiyor.

using UnityEngine;
using UnityEngine.SceneManagement; // Sahne yönetimi için
using UnityEngine.UI; // UI bileşenleri için

public GameObject DeathPanel; // DeathPanel'i public olarak tanımla, böylece Unity Editor üzerinden atayabilirsin.
Unity editörde ayarlamaları yapabilirsin.

Deathpanel ve scenemanager. Loadscene fonksiyonlarıyla ilgili hatalar alıyorsun çünkü deathpanel değişkenini tanımlamamışsın ve scenemanager‘ın doğru şekilde kullanılması için gerekli olan Namespace'i dahil etmen gerekiyor.

Using unityengine;
Using unityengine. Scenemanagement; // sahne yönetimi için.
Using unityengine. UI; // UI bileşenleri için.

Public gameobject deathpanel; // Deathpanel'i public olarak tanımla, böylece Unity editor üzerinden atayabilirsin.
Unity editörde ayarlamaları yapabilirsin.

Unity Editor'ü aç:
Death panel olarak kullandığın UI paneline sahip olan Gameobject'i bul.
Portaltrigger Script'ini içeren Gameobject'e git. Inspector panelinde, portaltrigger script komponentine bak.
Death panel alanını bul ve death panel olarak kullandığın UI panelinin Gameobject'ini bu alana sürükleyip bırak.
Bu yol yardımcı olur umarım sana.
 
Son düzenleme:
DeathPanel ve SceneManager.LoadScene fonksiyonlarıyla ilgili hatalar alıyorsun çünkü DeathPanel değişkenini tanımlamamışsın ve SceneManager‘ın doğru şekilde kullanılması için gerekli olan namespace’i dahil etmen gerekiyor.

using UnityEngine;
using UnityEngine.SceneManagement; // Sahne yönetimi için
using UnityEngine.UI; // UI bileşenleri için

public GameObject DeathPanel; // DeathPanel'i public olarak tanımla, böylece Unity Editor üzerinden atayabilirsin.
Unity editörde ayarlamaları yapabilirsin.



Unity Editor'ü aç:
Death panel olarak kullandığın UI paneline sahip olan Gameobject'i bul.
Portaltrigger Script'ini içeren Gameobject'e git. Inspector panelinde, portaltrigger script komponentine bak.
Death panel alanını bul ve death panel olarak kullandığın UI panelinin Gameobject'ini bu alana sürükleyip bırak.
Bu yol yardımcı olur umarım sana.
Hocam çok sağolun dediklerinizi yaptıktan sonra oldu. Fakat gelecek levela geçince rastgele bir konumda doğuyor karakter. Bunu nasıl düzeltebilirim? Bu arada oyun 2D.
 
Hocam çok sağolun dediklerinizi yaptıktan sonra oldu. Fakat gelecek levela geçince rastgele bir konumda doğuyor karakter. Bunu nasıl düzeltebilirim? Bu arada oyun 2D.
Tamam şimdi karakterin başlamasını istediğiniz noktaya bir GameObject yerleştirin. Spawn Point yap mesela adını. Bu sadece konumu belirleyici görevi görecek. Yani görsel bileşeni olmayabilir.
Karakterin spawn pointe taşınmasını sağlayacak script örneği:

public class PlayerSpawner : MonoBehaviour
{
public Transform spawnPoint; // Spawn point'in Transform komponenti

void Start()
{
// Oyuncu karakterini spawn point konumuna taşı
transform.position = spawnPoint.position;
}
}
Oyuncu karakterinizin GameObject’ine yukarıdaki PlayerSpawner scriptini eklersin. Sonra
Unity Editor’de, karakterinizin GameObjectine gidin ve Inspector panelinde PlayerSpawner scriptine bakın.
Spawn Point alanını bulun ve sahnede oluşturduğunuz “PlayerSpawnPoint” GameObject’ini bu alana sürükleyip bırakın. Böyle dediğinizin olması lazım. Oyunu hemen bitirde oynayalım. 😄
 
Son düzenleme:

Geri
Yukarı