Unity Tutorial – First Aid Kits aufnehmen und Gesundheit aufladen
Dieses Video gehört zur Unity 2D Tutorial Reihe.
Es geht weiter mit meiner 2D-Tutorial-Reihe. Dieses Mal zeige ich Dir wie wir unserem Spielercharakter das Aufnehmen von First Aid Kits beibringen, um so den Gesundheitszustand des Spielers aufzuladen.
Gesundheit aufladen
In dem Video-Tutorial erweitern wir hierfür zunächst einmal unseren HealthController, um eine neue Funktion. Über diese werden wir unserem Spieler die eigentliche Gesundheit „zufügen“. Diese rufen wir dann später auf, wenn der Spieler ein First Aid Kit aufnimmt.
Das Aufnehmen eines First Aid Kits kann man nun in der Unity Engine natürlich auf unterschiedliche Weisen umsetzen. Ich zeige Dir gleich zwei Varianten, wie Du dies umsetzen kannst. Denn beide Varianten funktioniert natürlich. Eine nutzt dabei einen Collider, die andere arbeitet mit einem Trigger-Collider.
Auch wenn beide Varianten sich ähneln, wollte ich Dir sie zeigen. Ansonsten könnte es vielleicht vorkommen, dass Du Dich später mal fragst, warum ich es so und nicht anders umgesetzt habe. Und da erkläre ich natürlich gerne, dass es manchmal keine Rolle spielt, da beides funktioniert 🙂
Video
Hier ist das Tutorial-Video. Viel Spaß damit!
Projektdateien
Möchtest Du vielleicht die Projektdateien mit allen enthaltenen Skripten, Animationen usw. herunterladen? Das kannst Du, und zwar für eine kleinen Obolus kannst Du diese erhalten und mich dadurch gleichzeitig auch etwas unterstützen (was mich natürlich sehr freuen würde ). Mehr kannst Du hier erfahren: Unity 2D Projektdateien.
Gefällt Dir dieser Artikel?
Hat Dir das Video gefallen? Dann teile diesen Artikel doch einfach auf Deinen sozialen Kanälen. Du machst mir damit eine riesen Freude
Hi Carsten! Ich wollte mal nachfragen ob das Buch, „Spiele entwickeln mit Unity“ auch noch mit Unity 5 verwendbar ist. Ich freu mich über deine Antwort 🙂
@Edwin Ja, das Buch ist (abgesehen von ein paar kleinen Details) auch noch mit Unity 5 verwendbar. Die Dinge, die sich geändert haben, erläutere ich im passwortschützen Bereich (siehe Menü „Buch-Zusatzmaterial“).
Hi Carsten!
Ich hab mal wieder eine Frage: Ich habe im meinem Unityspiel einen Cylinder rauf und runter bewegen lassen (per Transform.Translate) aber dann entsteht so ein komisches Rütteln beim Hinauffahren (siehe Video: https://www.youtube.com/watch?v=JRlKoXScj2o ) Also der Ball und der Cylinder rütteln leicht wenn der Ball drauf ist. Weiß du wie man das beheben kann?
@Edwin Transform.Translate ist natürlich nicht die optimalste Variante. Machst Du die Bewegung in Update oder FixedUpdate? Haben Deine Zylinder ein Rigidbody? Das bitte unbedingt machen, auch wenn Du dann IsKinematic aktivierst.
Zum Beheben des Problems gibt es eine einfache Alternative: Wenn möglich, dann animiere die Position anstatt sie per Skript zu verschieben. Dann sollte es nicht ruckeln. Das mache ich übrigens demnächst in meiner Tutorial-Reihe bei einem sehr ähnlichen Fall auch 😉
@Carsten
Vielen Dank!
Lag tatsächlich an dem Update/FixedUpdate und dem Rigidbody. Läuft jetzt komplett ohne ein „Rüttler“! 😀
@Edwin Klasse, freut mich, dass es jetzt funktioniert 🙂
Ich habe ein Problem:Ich habe das Script hinzugefügt zum HealthKit aber es wird nicht gelöscht und es wird nicht anerkannt.Er läuft nicht durch wegen dem Box Collider was kann ich tun?
@Luk Hast Du ein BoxCollider2D oder ein Box Collider? Bitte kontrolliere ncoh einmal ganz genau das Skript. Die Groß-und Kleinschreibung ist hier extrem wichtig! Wenn Du alles 100% gleich machst (auch die Collider-Einstellungen etc.), dann wird es funktionieren 🙂
Ich habe das Script richtig.Nur er sagt Object reference set not to an(…).
Script;using UnityEngine;
using System.Collections;
public class HealthKit : MonoBehaviour {
public float healthpoints = 1;
HealthController healthController;
/* Update is called once per frame
void OnEnterCollison2D(Collision other)
{
if(other.gameObject.CompareTag(„Player“))
{
healthController.AddHealth(healthpoints);
Destroy(gameObject);
}
}
*/
void OnTriggerEnter2D(Collider2D other)
{
if(other.gameObject.CompareTag(„Player“))
{
healthController.AddHealth(healthpoints);
Destroy(gameObject);
}
}
}
hab es hinbekommen
@Luk Super Sache 🙂