Der Feind verfolgt den Spieler durch das Portal, auch wenn der Spieler nicht in Range war. Wie fix ich das?

Also ich versuche ein Spiel zu machen, in dem etwas den Spieler (Pluto) verfolgt, solange dieser in der Range ist. Außerdem soll dieses Verfolgungswesen (einfach Enemy genannt) dem Spieler durch ein Portal (Wurmloch) folgen, aber nur wenn der Spieler vorher in der Range war. Das klappt auch alles, aber sobald der Spieler einmal in Range war, fliegt der Enemy immer in das Portal, in das der Spieler rein ist, egal, ob er in Range war oder nicht. Vielen Dank! Das ist mein bisheriger Code:

Variablenerklärungen:

bool plutoInRange: ist Pluto in der Range?

bool plutoThroughWH: ist Pluto durch das Wurmloch/Portal?

bool kannZuWH: kann der Enemy Pluto zum/durch Wurmloch/Portal folgen?

bool afterPlutoMove: ist der Enemy schon durch das Wurmloch/Portal, durch das Pluto geflogen ist?

GameObject wHPlutoMovedThrough: Das Wurmloch/Portal, durch das Pluto geflogen ist.

void Update()
    {
        if(plutoInRange == true && plutoThroughWH == true)
        {
          kannZuWH = true;
        }


        if(plutoInRange == false)
        {
          kannZuWH = false;
        }


        if(Vector2.Distance(transform.position, target.position) < detectionDistance && Vector2.Distance(transform.position, target.position) > stoppingDistance)
        {
          transform.position = Vector2.MoveTowards(transform.position, target.position, speed * Time.deltaTime);
          plutoInRange = true;
        }
        else if(kannZuWH == false)
        {
          MoveRandom();
        }


        if(kannZuWH == true)
        {
          Debug.Log(wHPlutoMovedThrough.name);
          transform.position = Vector2.MoveTowards(transform.position, wHPlutoMovedThrough.transform.position, speed * Time.deltaTime);
          if(afterPlutoMove == true)
          {
            plutoThroughWH = false;
            wHPlutoMovedThrough = null;
            kannZuWH = false;
            afterPlutoMove = false;
          }
        }
      }
C Sharp, Unity, Unity2D
Ist es "ok", wenn man es nicht direkt weiß?

Moin,

seit ungefähr zwei Monaten bin ich dabei, C# in Unity zu lernen, weil es mir Spaß macht, ein Spiel zu entwickeln und zu verstehen, wie die Spielmechaniken funktionieren.

Vor Kurzem habe ich ein Jump ’n’ Run Spiel entwickelt, welches "Super Mario" ähnelt. Es beinhaltet Spikes, Thwomp, Säge (geht hin und her), Früchte für die Regeneration und Münzen. Zudem kann der Charakter normal gehen, springen und beherrscht einen doppelten Sprung. Mehr ist da nicht.

Nun habe ich mich an ein neues 2D-Projekt gewagt und wollte für ein Dungeon-Erkundungsspiel ein Inventar- und Shopsystem einbauen. Jedoch hat es sich als schwieriger herausgestellt, als ich dachte.

Ich hatte gar keine Ahnung, wie und wo ich anfangen sollte. Also schaute ich mir YouTube-Videos an und ging durch Foren. Als ich mir den Code anguckte, dachte ich mir, dass ich nie daraufgekommen wäre.

Natürlich weiß ich, dass man nach zwei Monaten kein professioneller Entwickler ist und schon alles kann und man immer weiterlernt, aber...

  1. Frage: Ist es schlimm, dass man es nicht weiß und den Code sogar kopieren muss, solange man den versteht?
  2. Frage: Wie sollte man sowas wie ein Inventarsystem lernen, wenn es nicht YouTube geben würde?
  3. Frage: Wie war eure Spielentwicklungsgeschichte? Gab es einen Wendepunkt, wo ihr vieles nicht mehr nachgucken musstet? Nach wie viel Monaten (Jahren) war es?
programmieren, C Sharp, Informatik, Softwareentwicklung, Spieleentwicklung, Spieleentwickler, Unity, Unity 2D Spiel
Unity - Object reference not set to an instance of an object?

Hallo, weiß jemand wie ich in Unity diesen NullReferenceException Fehler beheben bzw. fixen kann? Kenne mich noch nicht so richtig mit C# und Unity aus. Daher weiß ich auch nicht, wie ich mit diesen Fehler umgehen kann. Habe in Unity 3D eine Shop Scene gemacht, und habe dann dieses Script für die Buttons und den Shop allgemein gemacht, um Skins kaufen zu können und die Game Coins mit den Buttons zu verbinden. Ich habe ein "Debug.Log" erstellt. Um zu schauen, dass wenn ich auf den Button klicke, in der Konsole dann steht als Beispiel "Button wurde geklickt!" doch stattdessen steht dort immer als Fehler "NullReferenceException: Object reference not set to an instance of an object

ShopManager.Start () (at Assets/Scripts/Best/ShopManager.cs:15)"

Hier ist das Script für den Shop, und die Buttons. (C#):

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


public class ShopManager : MonoBehaviour
{


    public int kontostand;
    public Text kontostandText;


    // Start is called before the first frame update
    void Start()
    {
        kontostandText.text = kontostand.ToString();
    }


    public void ItemKaufen(int itemPreis)
    {
        // Kontostand überprüfen
        if(kontostand >= itemPreis)
        {
            Debug.Log("Item wurde gekauft");
            // Item zum Inventar hinzufügen
            // Kontostand neu berechnen
            kontostand = kontostand - itemPreis;
            // Kontostand aktualisieren
        }
        
    }

Ich hatte mir ein Tutorial dazu angeschaut wie man es behebt, doch leider ohne Erfolg.

Weiß jemand, was das bedeutet/heißt und wie man es am einfachsten beheben kann, und wo da im Script der Fehler ist? Es soll ja angeblich in Zeile 15 sein. Ich hoffe, ihr versteht meine Message dazu ein wenig. Vielen Dank im voraus! :D

Unity - Object reference not set to an instance of an object?
Computer, Fehler, programmieren, C Sharp, Programmiersprache, Visual Studio, Error Code, Unity, unity3d, Spiele und Gaming

Meistgelesene Fragen zum Thema Unity