unity sterben?

3 Antworten

Wie auch immer du dir den Rest vorgestellt hast, aber folgendes Skript könnte zumindest ein Ansatz sein.(Oder ein DeadlyWater-Skript mit Player-Tag-Test ?)

Player2D.cs                    Tags: Water und Enemy

using UnityEngine;
[RequireComponent(typeof(Rigidbody2D))]
[RequireComponent(typeof(BoxCollider2D))]
public class Player2D : MonoBehaviour
{
    [Tooltip("Gesundheit des Spielers") ][Range(1, 200)]public byte Health    = 100 ;
    [Tooltip("Schaden pro Feindkontakt")][Range(1, 200)]public byte Damage    = 10  ;
    [Tooltip("Direktzerstörung mit Tod")]               public bool Eliminate = true;

    private void Start () {                 Debug.Log("Lebensenergie:" + Health); }
    private void OnCollisionEnter2D (Collision2D obj)
    {
        if(obj.transform.tag=="Water")
        {                                   Debug.Log("Spieler ist ertrunken!");
          if(Eliminate) Destroy(gameObject);//Oder nur Gesundheit auf 0 setzen ?
          else {Health = 0;                 Debug.Log("SPIELER IST TOT!");
               }//Was nun ?                 Auf Wiederbelebung warten ?
        }
        else
        if (obj.transform.tag == "Enemy")
        {                                   Debug.Log("Schaden erlitten!");
            if ( Health<= Damage) {
             if(Eliminate) Destroy(gameObject);//Oder nur Gesundheit auf 0 ?
             else {Health = 0;              Debug.Log("SPIELER IST TOT!");
                  }//Was nun ?              Auf Wiederbelebung warten ?
            }//>
            else Health-=Damage;            Debug.Log("Lebensenergie:" + Health);
        }
    }
}

Mit Intersect prüfen ob sich 2 Shapes berühren, leider kenn ich mich in Unity nicht so aus aber das Stichwort in verbindung mit C# und Unity sollte helfen.

Sonst Prüfst du bei einem einfachen 2D Game die X und Y Koordinate des Spielers und des Hindernis und dann Bumm wenn es kracht.

Woher ich das weiß:eigene Erfahrung

Es gibt eine einfachere Lösung(2D), wo du aber kaein leben hast. falls du mit C# proggrammierst hier der code:

 SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex );

Damit wird die aktuelle scene neu geladen ideal wenn es z.B in einem 2D spiel Zacken oder andere hindernisse gibt