Jump to content
Unity Insider Forum

Hit an Enemy


checkalord3

Recommended Posts

Hi Leute! :)

Ich habe einen kleinen Hänger. Ich weiß, dass es eigentlich so simpel ist, aber ich bekomme es einfach nicht hin, dass mein Charakter, wenn er einen Gegner haut, Schaden macht und das aber nur 1x pro Animation.

Ich bin bisher so vorgegangen: 

Ich habe überprüft ob die Leertaste gedrückt wird. (Input.GetKey etc) Klappt
Ich habe OnTriggerEnter benutzt um zu testen, ob die Waffe den Gegner berührt. Klappt

Das Problem ist jetzt, dass der Gegner aber nur 1x sozusagen getroffen wird. Dauerhaft eben.

Ich möchte aber, dass er jedes mal Schaden bekommt, wenn eine neue Animation anfängt. Ich habe also versucht ein Script zu schreiben, dass immer wenn die Animation startet der Hit erneut gezählt wird. Leider hänge ich noch genau an dieser Sache. Ich weiß noch nicht, wie ich anfangen soll. Ist das so überhaupt sinnvoll?

Danke im Voraus!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Problem ganz einfach gelöst. Stande nur auf dem Schlauch:

Per  OnTriggerEnter finde ich heraus, wer das GameObject ist und filtere mir dessen "Leben" heraus:

public class Hauen : MonoBehaviour {

    Gegner gegner;

void OnTriggerEnter (Collider other) {

        if (other.tag == "Gegner") {
            gegner = other.GetComponent<Gegner> ();
        }
    }

}

Jetzt noch in der Animation eine Funktion per Event aufrufen lassen:

void Hit () {
        gegner.TakeDamage (5);
    }

ein C#-Script erstellen mit folgendem Inhalt:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Gegner : MonoBehaviour {

    public int leben;

    void Start () {
        leben = 100;
    }
    
    public void TakeDamage (int pschaden) {
        leben -= pschaden;
    }
}

Und schon bekommt der Gegner Schaden. Wer aber will, dass beim Weggehen vom GameObject, kein Schaden mehr verursachen möchte, der benutzt OnTriggerExit folgendermaßen:

void OnTriggerExit () {
    
        gegner = null; //Das gemerkte GameObject wird auf null gesetzt 

    }

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...