Jump to content
Unity Insider Forum

Zerbo93

Members
  • Posts

    7
  • Joined

  • Last visited

Zerbo93's Achievements

Newbie

Newbie (1/3)

1

Reputation

  1. Werde ich mal entsprechend abändern. Danke!
  2. Hallo, ich stehe mal wieder vor einem Problem, und brauche eure Hilfe. Ich habe vor, über ein Gameobjekt(Bulldozer), ein anderes Gameobjekt(Gebäude) zu löschen. Sprich wenn der Bulldozer mit einem Objekt kollidiert, dass den Tag "Building" hat und man dann die linke Maustaste drückt, soll das Gebäude, und die Einträge zum Gebäude aus der txt-Datei, gelöscht werden. Momentan löscht sich das Bulldozer-Objekt aber nur selbst. Und das auch nicht jedes mal, sondern erst nach einigen Versuchen. Hier das Script(C#) zum Bulldozer: using System; using UnityEngine; using System.IO; public class BulldozerScript : MonoBehaviour { private uint id; private string Sid; private void OnCollisionStay(Collision collision) { if (collision.gameObject.tag == "Building" && Input.GetMouseButtonDown(0)) { Debug.Log("Hallo!"); if (gameObject.GetComponent<HuasScript>() != null) { id = gameObject.GetComponent<HuasScript>().GebäudeId; } else if (gameObject.GetComponent<FarmScript>() != null) { id = gameObject.GetComponent<FarmScript>().GebäudeId; } else if (gameObject.GetComponent<FabrikScript>() != null) { id = gameObject.GetComponent<FabrikScript>().GebäudeId; } else if (gameObject.GetComponent<HolzfaellerScript>() != null) { id = gameObject.GetComponent<HolzfaellerScript>().GebäudeId; } else if (gameObject.GetComponent<RoadScript>() != null) { id = gameObject.GetComponent<RoadScript>().GebäudeId; } else if (gameObject.GetComponent<SaegewerkScript>() != null) { id = gameObject.GetComponent<SaegewerkScript>().GebäudeId; } Sid = Convert.ToString(id); string[] lines = File.ReadAllLines("Temp.txt"); StreamWriter writer = new StreamWriter("Temp.txt", true); for (int i = 0; i < lines.Length; i++) { if(lines[i] == Sid) { int y = i + 6; string leeren = null; while(i <= y) { writer.WriteLine(lines[i], leeren); i++; } break; } } writer.Close(); Destroy(gameObject); } } } Anbei ein Screenshot, zum besseren Verständnis, was ich mit dem Bulldozer-Objekt meine. Das Objekt folgt stets der Maus. Schonmal danke für eure Hilfe im voraus! Edit 1: Er geht in die if-Abfrage "collision.gameObject.tag == "Building" && Input.GetMouseButtonDown(0)" rein. Daher erkennt er auf jeden fall, dass er über einem Gebäude steht. Der Bulldozer selber hat keinen Tag. Nur die Gebäude, mit denen er kollidiert! Edit 2: Das Script liegt natürlich direkt auf dem Bulldozer-Objekt.
  3. Perfekt! Danke. Genau sowas habe ich gesucht.
  4. Hallo zusammen, ich suche eine Möglichkeit, die Bewegungsmöglichkeit eines, vom Spieler gesteuerten, Gameobjekts zu beschränken. Sprich das die Bewegung des Gameobjekts nur in den Bereichen, x zwischen -150 und 150 z zwischen -150 und 150 ,möglich ist. Hintergrund: ich arbeite an einer Wirtschaftssimulation und der Kameraanker (das zu begrenzende Gameobjekt), kann sich aktuell komplett von der Map weg bewegen. So ist das natürlich etwas hirnrissig Hier der Abschnitt, mit dem ich den Anchor bewege: Vector3 forward = cam.transform.forward; forward.y = 0.0f; forward.Normalize(); Vector3 right = cam.transform.right; right.y = 0.0f; right.Normalize(); float moveX = Input.GetAxisRaw("Horizontal"); float moveZ = Input.GetAxisRaw("Vertical"); Vector3 dir = forward * moveZ + right * moveX; dir.Normalize(); dir *= moveSpeed * Time.deltaTime; transform.position += dir; Vielen Dank für eure Hilfe im Voraus!
  5. Oh man! Danke! Was für ein dummer Fehler
  6. Guten Abend, ich habe folgendes Problem. Ich lasse per Spawner 200 mal den selben Gegner spawnen. Jeder Gegner soll natürlich eigene Werte haben. Diese Werte sollen per Zufallsgenerator ausgewürfelt werden. Leider scheint er ein Problem damit zu haben, dass ich dasselbe Script auf so viele Objekte verwende. Auf jeden fall, wirft er mir folgende Fehlermeldung aus: "NullReferenceException: Object reference not set to an instance of an object ZombieScript.Start () (at Assets/Scripts/ZombieScript.cs:23)" ZombieScript.cs (Script in dem der Fehler auftaucht) using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class ZombieScript : MonoBehaviour { public GameObject Zombie; private GameObject Gamecontroller; private int Leben = 1; private int Stärke = 0; private int Verteidigung = 0; private long expLoot = 0; private long GoldLoot = 0; private System.Random Zufall; private bool Death = false; private float DespawnTimer = 30.0f; void Start() { Gamecontroller = GameObject.Find("GameController"); Zombie.GetComponent<Animator>().Play("Idle"); Leben = Zufall.Next(80, 100); //Zeile in der der Fehler gemeldet wird! Stärke = Zufall.Next(6, 9); Verteidigung = Zufall.Next(3, 5); expLoot = Zufall.Next(10, 20); GoldLoot = Zufall.Next(20, 40); } // Update is called once per frame void Update() { if(Death == true) { DespawnTimer = DespawnTimer - (1 * Time.deltaTime); int Despawn = Convert.ToInt32(DespawnTimer); if(Despawn <= 0) { DestroyImmediate(Zombie); } } } void besiegt() { if(Leben <= 0) { Zombie.GetComponent<Animator>().Play("Death"); Gamecontroller.SendMessage("ZombieGold", GoldLoot, SendMessageOptions.DontRequireReceiver); Gamecontroller.SendMessage("ZombieExp", expLoot, SendMessageOptions.DontRequireReceiver); Death = true; } } } Spawner.cs using System.Collections; using System.Collections.Generic; using UnityEngine; public class Spawner : MonoBehaviour { public GameObject TestCube; public GameObject[] Mob; private int MobAnzahl = 0; private int MaxMobAnzahl = 200; private float MaxAchseX = 955.311f; private bool Abbruch = false; private float MaxAchseZ = 1945.473f; void Start() { } // Update is called once per frame void Update() { if(MobAnzahl < MaxMobAnzahl) { MobSpawn(); } } void MobSpawn() { Vector3 pos = new Vector3(); pos.x = Random.Range(-931.2954f, MaxAchseX); pos.y = 2.0f; pos.z = Random.Range(54.23655f, MaxAchseZ); Instantiate(TestCube, pos, Quaternion.identity); if(Abbruch == false) { Instantiate(Mob[Random.Range(0, Mob.Length)], pos, Quaternion.identity); MobAnzahl++; } else { Abbruch = false; } } public int Spawnabbruch(int wahl) { Abbruch = true; return wahl; } } Ich bin noch Anfänger und weiß daher nicht, wie ich das Problem angehen soll. Daher bitte ich hier um Hilfe. Freundliche Grüße
×
×
  • Create New...