Unity Game Over ekranı hatası

EfeKezer99

Kilopat
Katılım
6 Nisan 2018
Mesajlar
38
video burada merhaba, iyi çalışmalar dilerim herkese. Benim problemim maalesef daha önce yaşamadığım ama ne olduğunu da anlayamadığım bir problem. Ben bir Game over ekranı varimsi bir şey yapmak istemiştim, düşman karakterler bana collider ile çarptığında hasar veriyorlar ve verdikleri hasar 100F'e ulaşırsa beni Game over ekranına gönderiyordu. Karakter öldüğünde tekrar respawn edebilsin kendini diye bunu da belirli kodlarla koşullara bağladım lakin bir süreden sonra karakter kendi kendine Game over ekranına gitmeye başladı. Scene Manager üzerinden sahne arası geçişler yaparak sağladım bu durumu ama sorun nerede tam olarak çözemedim. Yardımcı olursanız sevinirim.

C#:
KARAKTERİN RESPAWN KODU:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class GameRespawn : MonoBehaviour.
{
 public float threshold; //theresold karakterin transformdaki karakterin y ekseninin kısaltma haliymiş.

 AttirubesManager AttirubesManager;
 // Update is called once per frame.
 void FixedUpdate()
 {

 if (transform.position.y < threshold)
 {
 Cursor.lockState = CursorLockMode.None;
 Cursor.visible = true;
 SceneManager.LoadScene("DeathScreen");
 transform.position = new Vector3(-14f, 1.39f, 16f);

 }

 }
}
--------------------------------------------------------------------
Düşmanların karaktere hasar verme kodu:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Animations;
using UnityEngine.SceneManagement;

public class AttirubesManager : MonoBehaviour.
{
 public int sağlık;

 public GameObject player;

 public void hasaral(int miktar)
 {
 sağlık -= miktar;

 if (sağlık <=0f)
 {
 ölüm();
 }
 }

 private void OnCollisionEnter(Collision collision)
 {
 if(collision.gameObject.tag == "zombi")
 {
 hasaral(20);
 }
 }

 void ölüm()
 {
 Destroy( player );
 SceneManager.LoadScene("DeathScreen");
 Cursor.lockState = CursorLockMode.None;
 Cursor.visible = true;
 transform.position = new Vector3(-14f, 1.39f, 16f);
 }
 void Update()
 {

 }

}
 
video burada merhaba, iyi çalışmalar dilerim herkese. Benim problemim maalesef daha önce yaşamadığım ama ne olduğunu da anlayamadığım bir problem. Ben bir Game over ekranı varimsi bir şey yapmak istemiştim, düşman karakterler bana collider ile çarptığında hasar veriyorlar ve verdikleri hasar 100F'e ulaşırsa beni Game over ekranına gönderiyordu. Karakter öldüğünde tekrar respawn edebilsin kendini diye bunu da belirli kodlarla koşullara bağladım lakin bir süreden sonra karakter kendi kendine Game over ekranına gitmeye başladı. Scene Manager üzerinden sahne arası geçişler yaparak sağladım bu durumu ama sorun nerede tam olarak çözemedim. Yardımcı olursanız sevinirim.

C#:
KARAKTERİN RESPAWN KODU:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class GameRespawn : MonoBehaviour.
{
 public float threshold; //theresold karakterin transformdaki karakterin y ekseninin kısaltma haliymiş.

 AttirubesManager AttirubesManager;
 // Update is called once per frame.
 void FixedUpdate()
 {

 if (transform.position.y < threshold)
 {
 Cursor.lockState = CursorLockMode.None;
 Cursor.visible = true;
 SceneManager.LoadScene("DeathScreen");
 transform.position = new Vector3(-14f, 1.39f, 16f);

 }

 }
}
--------------------------------------------------------------------
Düşmanların karaktere hasar verme kodu:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Animations;
using UnityEngine.SceneManagement;

public class AttirubesManager : MonoBehaviour.
{
 public int sağlık;

 public GameObject player;

 public void hasaral(int miktar)
 {
 sağlık -= miktar;

 if (sağlık <=0f)
 {
 ölüm();
 }
 }

 private void OnCollisionEnter(Collision collision)
 {
 if(collision.gameObject.tag == "zombi")
 {
 hasaral(20);
 }
 }

 void ölüm()
 {
 Destroy( player );
 SceneManager.LoadScene("DeathScreen");
 Cursor.lockState = CursorLockMode.None;
 Cursor.visible = true;
 transform.position = new Vector3(-14f, 1.39f, 16f);
 }
 void Update()
 {

 }

}
En başta Karakterin respawn kodunda
SceneManager.LoadScene("DeathScreen");
var, kaldırmayı dene istersen.
 
Log koyar mısın, hangi aşamadan sonra atıyor game over ekranına?
Bir dakika deniyorum hemen.

Hocam karaktere can verdiniz mi ? Yani tekrar dirilince canı 100F oluyor mu ?
Evet, verdim. İnsceptor kısmından karakterin sağlığı 100F'dir.

Log koyar mısın, hangi aşamadan sonra atıyor game over ekranına?
Düşmanların karaktere hasar verme kodundaki ölüm metodunda ki loadscreen'den sonra atıyor kendi kendine. Anlayabilmiş değilim hala.

Arkadaşlar sorunu çözdüm. Düşman karaktere hasar verme kodunda, birden fazla zombi olduğu için ve tag olarak da zombiler değdikleri an Player'a hasar vermeleri gerektiği için, zombiler birbirlerine değiyorlarmış ve bu da karakterin ölümüne sebep oluyormuş. Teşekkür ederim yardımlarınız için minnettarım.
 
Son düzenleme:

Technopat Haberler

Geri
Yukarı