C Sharp – die besten Beiträge

Unity Raycast / Gebäude anklicken?

Ich versuche aktuell ein Panel zu öffnen, wenn man auf ein platziertes Gebäude klickt (2D in Grid System)Das hier ist der kritische Code Ausschnitt:

void Update() {
  if (!Input.GetMouseButtonDown(0)) return;
  //if (EventSystem.current != null && EventSystem.current.IsPointerOverGameObject()) return;

  Vector3 worldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
  Vector2 point2D = new Vector2(worldPos.x, worldPos.y);

  RaycastHit2D hit = Physics2D.Raycast(point2D, Vector2.zero, 0f);

  Debug.Log($"Klick bei {point2D}, Treffer: {(hit.collider != null ? hit.collider.name : "kein Treffer")}");
  Debug.DrawLine(worldPos + Vector3.left * 0.2f, worldPos + Vector3.right * 0.2f, Color.green, 1f);
  Debug.DrawLine(worldPos + Vector3.up * 0.2f, worldPos + Vector3.down * 0.2f, Color.green, 1f);

  if (hit.collider != null) {
    var b = hit.collider.GetComponent<Building>();
    if (b != null) {
      Debug.Log($"Gebäude getroffen: {b.name}");
      StartCoroutine(OpenMenuDelayed(b));
      return;
    }
  }

  UIManager.Instance.ShowBuildingMenu(null);
} 

Die Kommentierte Zeile (die dritte) ist das Problem, sobald sie reingenommen wird kann ich das Gebäude nicht mehr anklicken (andere Tiles schon). Ich debugge jetzt schon etwas länger, weiß aber nicht wie ich das lösen soll (bin noch etwas neu bei Unity). Das Problem ist, dass ohne die diese Zeile es möglich ist durch UI Fragmente zu klicken, wie Buttons oder Menüs.

C Sharp, Unity

ChatGPT sieht ein Problem in meiner Method und ich verstehe nicht wirklich wo das Problem liegt (C# Programmieren)?

Ich lerne C# und habe ein kleines Programm entwickelt, In dem man Random eine Zahl rollt, die Größer sein soll als ein Random gerolltes Ziel. Ist die eigene Zahl kleiner als das Ziel hat man verloren, ist sie größer hat man gewonnen. Nun habe ich das Programm einmal ChatGPT überblicken lassen, und es sieht ein Problem in meiner StartReset variable in meiner ShouldPlay Methode und ich habe nicht ganz verstanden worin das Problem liegt, da mein Programm auch so ohne Probleme läuft und der Compiler weder Fehler, noch Warnungen anzeigt. Vielleicht kann mir ein Mensch besser erklären, worin ChatGPT das Problem sieht?

```

Random random = new Random();
Console.WriteLine("Would you like to play? Y/N)");
if (ShouldPlay(true))
{
  PlayGame();
}
void PlayGame()
{
  var play = true;
  while (play)
  {
    var target = random.Next(0, 6);
    var roll = random.Next(0, 7);
    Console.WriteLine($"Roll a number greater than {target} to win!");
    Console.WriteLine($"You rolled a {roll}");
    Console.WriteLine(WinOrLose(roll, target));
    Console.WriteLine("\nPlay again? (Y/N)");
    play = ShouldPlay(false);
  }
}
bool ShouldPlay(bool startReset)
{
  while (true)
  {
    Console.WriteLine("Please enter Y or N");
    string? userInput = Console.ReadLine();
    string? loweredInput = userInput?.ToLower();
    if (loweredInput == "y")
    {
      return true;
    }
    else if (loweredInput == "n")
    {
      return false;
    }
  }  
}
string WinOrLose(int roll, int target)
{
  if (roll > target)
  {
    return "You won!";
  }
  else
  {
    return "You lose!";
  }
}

```

programmieren, C Sharp, Code, Programmiersprache, Visual Studio, Algorithmus

Meistgelesene Beiträge zum Thema C Sharp