• Announcements

    • Lars

      Allgemeine Forenregeln   03/13/2017

      Forenregeln Nimm dir bitte einen Moment um die nachfolgenden Regeln durchzulesen. Wenn du diese Regeln akzeptierst und die Registration fortsetzen willst, klick einfach auf den "Mit der Registrierung fortfahren"-Button. Um diese Registration abzubrechen, klick bitte einfach auf den "Zurück" Button deines Browsers. Wir garantieren nicht für die Richtigkeit, Vollständigkeit und Brauchbarkeit der Nachrichten und sind auch nicht dafür verantwortlich. Die Beiträge drücken die Meinung des Autors des Beitrags aus, nicht zwangsläufig das, wofür die Forensoftware steht. Jeder Nutzer, der denkt, dass ein veröffentlichter Beitrag unzulässig bzw. störend ist, ist aufgefordert uns unverzüglich per E-Mail zu kontaktieren. Wir haben das Recht störende Beiträge zu löschen und bemühen uns, das in einem realistischem Zeitraum zu erledigen (sofern wir beschlossen haben, dass die Löschung notwendig ist). Du akzeptierst, durchgehend während der Nutzung dieses Services, dass du dieses Forum nicht dazu missbrauchen wirst, Inhalte zu veröffentlichen, welche bewusst falsch und/oder verleumderisch, ungenau, beleidigend, vulgär, hasserfüllt, belästigend, obszön, sexuell belästigend, bedrohlich, die Privatsphäre einer Person verletzend oder in irgend einer Art und Weise das Gesetz verletzen. Des Weiteren akzeptierst du, dass du keine urheberrechtlich geschützte Inhalte ohne Erlaubnis des Besitzers in diesem Forum veröffentlichst. Mit dem Klick auf den "Mit der Registrierung fortfahren"-Button, akzeptierst du zudem unsere Datenschutzerklärung und stimmst der Speicherung deiner IP-Adresse und personenbezogenen Daten zu, die dafür benötigt werden, um dich im Falle einer rechtswidrigen Tat zurückverfolgen zu können bzw. permanent oder temporär aus dem Forum ausschließen zu können. Es besteht keine Pflicht zur Abgabe der Einwilligung, dies erfolgt alles auf freiwilliger Basis.   Zusatzinformationen Der Forenbetreiber hat das Recht, Nutzer ohne Angabe von Gründen permanent aus dem Forum auszuschließen. Des Weiteren hat er das Recht, Beiträge, Dateianhänge, Umfrage, Blogeinträge, Galleriebilder oder Signaturen ohne Angabe von Gründen zu entfernen. Mit der Registrierung verzichtest du auf alle Rechte an den von dir erstellten Inhalten, bzw. treten diese an das Unity-Insider.de und Unity-Community.de ab. Dies bedeutet im Klartext, dass das Unity-Insider.de und Unity-Community.de frei über deine Texte verfügen kann, sofern diese nicht wiederum die Rechte anderer verletzen. Es besteht weiterhin kein Anspruch von registrierten Nutzern bzw. ehemaligen registrierten Nutzern darauf, dass erstellte Inhalte und/oder die Mitgliedschaft (User) wieder gelöscht werden (Erhaltung der Konsistenz dieses Forums).   Einwilligungserklärung Wenn du mit der Speicherung deiner personenbezogenen Daten sowie den vorstehenden Regeln und Bestimmungen einverstanden bist, kannst du mit einem Klick auf den Mit der Registrierung fortfahren-Button unten fortfahren. Ansonsten drücke bitte Zurück. Stand: 07.03.2011

Vermentex

Members
  • Content count

    26
  • Joined

  • Last visited

Community Reputation

1 Neutral

About Vermentex

  • Rank
    Member
  1. Danke, für die schnelle und einfache Hilfe. Hat wunderbar geklappt. Für die Nachwelt: So sieht das Script jetzt aus. using System.Collections; using System.Collections.Generic; using UnityEngine; public class AddTime : MonoBehaviour { public Countdown countdown; public int timeToAdd; void OnTriggerEnter (Collider other) { if (other.GetComponent<PlayerController> () == null) return; countdown.timeLeft += timeToAdd; Destroy (gameObject); } } Schönen Abend, wünsche ich noch
  2. Hallo Leute, ich habe ein kleines Countdownscript. Die Zeit in einer Scene läuft von 300 bis 0 herunter. Ist 0 erreciht, wird eine Szene geladen. Dann habe ich noch ein zweites Script. Mit diesem soll beim Einsammeln eines Items, Zeit zum Countdown hinzugerechnet werden. Ich kann diese leider nicht ansprechen. Weiß jemand wie das geht? Hier meine beiden Scripts: using UnityEngine; using UnityEngine.UI; using System.Collections; public class Countdown : MonoBehaviour { public float timeLeft = 300.0f; public Text text; public void Update() { timeLeft -= Time.deltaTime; text.text = "GameOver in: " + Mathf.Round(timeLeft) + " sec"; if(timeLeft < 0) { Application.LoadLevel("GameOver"); } } } using System.Collections; using System.Collections.Generic; using UnityEngine; public class AddTime : MonoBehaviour { public int timeToAdd; void OnTriggerEnter (Collider other) { if (other.GetComponent<PlayerController> () == null) return; //Hier muss die Zeit zu timeLeft hinzugerechnet werden. Destroy (gameObject); } } Vielen Dank, für die nette Unterstützung
  3. Hat sich erledigt. War relativ einfach. Musste nur die Position des Bildes verschieben. Wusste nicht, dass das geht.
  4. Hallo Leute, ich hätte da mal eine Frage bezüglich der Darstellung einer Kamera im Canvas. Ich bin gerade dabei ein kleines 3D-Game zu erstellen. Ich habe eine Startwelt, in der der Spieler bestimmte Orte aufsuchen muss. Damit er diese auch findet, habe ich eine 2. Kamera direkt über dem Spieler erstellt, die die gesammte Welt von Oben darstellt, mit der position des Spielers. Da klappt soweit auch ganz gut, doch muss dieses Bild noch irgendwie dargestellt werden. Der Spieler hat eine eigene Kamera, die die Hauptkamera darstellt. Die 2. Kamera, soll nun links unten im Canvas dargestellt werden. Ist das möglich? Ich habe nichts gefunden, wie ich das kleine Bild der 2. Kamera da hin bekomme. Danke für die Hilfe
  5. Hi Leute, ich habe damals einen Tipp bekommen, wie man Level durch Speicherpunkte speichern kann. Ich benötige das gleiche gerade für ein 3D-Projekt, in Unity. Ich habe ein Script, dass ich an ein Objekt in der Scene vergebe, wodurch ein "SavePoint" generiert, bzw. überschrieben wird. Diesen möchte ich nun über ein TriggerObjekt abrufen. Wenn etwas dieses TriggerObjekt berührt, wird entweder eine vorgegebene Szene geladen oder wenn die Szene einen geringeren Wert als "SavePoint" hat, der jeweilige höchste "SavePoint" geladen. Ich zeige das einmal anhand der Scripte: using UnityEngine; using System.Collections; public class Load_Savepoint : MonoBehaviour{ [SerializeField] private int level; void Start() { var lastSavedLevel = PlayerPrefs.GetInt("savepoint"); if(level > lastSavedLevel) { PlayerPrefs.SetInt("savepoint", level); } } } Dieses Script erstellt einen "SavePoint" oder überschreibt den vorherigen. Er bekommt einen Wert, den ich gleichsetze, mit der Reihenfolge der Scenen im Build. Also Scene 1, bekommt den Wert 1. using UnityEngine; using System.Collections; public class LoadSavepointOrLevel : MonoBehaviour { public string levelSelect; void OnTriggerEnter(Collider other) { Application.LoadLevel(PlayerPrefs.GetInt("savepoint")); } [SerializeField] private int level; void Start() { var lastSavedLevel = PlayerPrefs.GetInt("savepoint"); if(level > lastSavedLevel) { Application.LoadLevel(levelSelect); } } } Dieses Script, ist an das TriggerObjekt gebunden. Wird OnTriggerEnter ausgelöst, läd die vorgegebene Szene (levelSelect) oder halt der SavePoint, sollte dieser einen höheren Wert haben. Das Problem, es funktioniert nicht richtig. Es wird immer die 4. Scene im Build geladen, obwohl diese nichtmal einen "SavePoint" hat. Sieht jemand den Fehler? Bin noch ein ziemlicher Anfänger Danke für die Hilfe
  6. Dankeschön, dass kannte ich nicht nicht so. Jetzt hat das mit dem Sprinten einwandfrei geklappt. Ich habe das jetzt genau wie beschreiben gemacht: if(Input.GetButton ("Sprint")) //nicht GetButtonDown { sprinting = true; } else { sprinting = false; } Das Ducken habe ich jetzt schon alleine herausgefunden. War eigentlich sogar ziemlich unkompliziert. if(Input.GetButton ("Sneak")) { controller = GetComponent<CharacterController>(); controller.height = 0.5F; } Für die Nachwelt Vielen Dank für die Hilfe
  7. Ok, Abfrage ist drin. Das Problem aber leider nicht nicht gelöst. Immer noch der selbe Fehler, dass die Geschwindigkeit nicht wieder normal wird, wenn die Sprintentaste losgelassen wird. Hier das komplette "neue" Script. using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { private float MoveSpeed = 15f; private float JumpHeight = 10f; private float gravity = 30f; public float MouseSensitivity = 0.5f; public float SprintSpeed = 30f; private bool sprinting; private Vector3 moveDir = Vector3.zero; // Use this for initialization void Start () { } void FixedUpdate () { float rotY = Input.GetAxis ("Mouse X") * MouseSensitivity; transform.Rotate (0, rotY, 0); } // Update is called once per frame void Update () { CharacterController controller = gameObject.GetComponent<CharacterController> (); if (controller.isGrounded) { moveDir = new Vector3 (Input.GetAxis ("Horizontal"), 0, Input.GetAxis ("Vertical")); moveDir = transform.TransformDirection (moveDir); //moveDir *= MoveSpeed;// moveDir *= sprinting ? SprintSpeed : MoveSpeed; if (Input.GetButtonDown ("Jump")) { moveDir.y = JumpHeight; } } moveDir.y -= gravity * Time.deltaTime; controller.Move (moveDir * Time.deltaTime); if(Input.GetButtonDown ("Sprint")) { sprinting = true; } else { sprinting = false; } } } Ich glaube ich verstehe da noch nicht ganz, wie so etwas auszusehen hat. Danke für die Mühen.
  8. Ich habe jetzt mal romprobiert, komme aber einfach nicht auf meinen Fehler. Das Sprinten klappt jetzt, doch hört er nicht mehr auf zu Sprinten, wenn der Button losgelassen wird. Weiß da jemand, was ich falsch gemacht habe? if (Input.GetButtonDown ("Sprint")) { MoveSpeed = 30f; } else if(Input.GetButtonDown ("Sprint")) { MoveSpeed = 15f; }
  9. Oh, ja. Jetzt sehe ich es auch. Danke Ich habe den jetzt weiter nach "unten" verlagert. Ein Problem bleibt dort dennoch bestehen. Wenn ich die Taste loslasse, bleibt die Geschwindigkeit so hoch. Sie soll aber dann wieder auf "15f"zurück wechseln. if (Input.GetButtonDown ("Sprint")) { MoveSpeed = 30f; } Dann fehlt mir jetzt nur noch die Höhenveränderung des Character Controllers.
  10. Hallo Leute, ich wollte heute zum ersten mal einen PlayerController, für einen 3D Player schreiben. Das hat im weitesten Sinne auch geklappt. 2 Dinge fehlen mir aber noch, bzw. sind mir nicht gelungen. Zum einen möchte ich, dass der Wert "MoveSpeed" beim Drücken der Sprinttaste verdoppelt wird. (Habe einfach den Doppelten Wert eingetragen) Leider hat das aber nicht geklappt. Die Geschwindigkeit wurde nicht erhöht. Des Weiteren nutze ich das Component "Character Controller". Der hat eine Höhe von "2". Beim Drücken von "c" wollte ich den Wert übers script auf "0.5" verändern lassen und beim loslassen, wieder zurück auf "2". Ich weiß aber nicht, wie ich diesen Wert ansprechen kann. Ich lege hier einmal das Script bei. Den fehlgeschlagenen Versuch, die Geschwindigkeit zu erhöhen, lasse ich einmal drin. Vielleicht fällt euch da ja was auf. Bin ja noch ein ziemlicher Anfänger. using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerController : MonoBehaviour { private float MoveSpeed = 15f; private float JumpHeight = 10f; private float gravity = 30f; public float MouseSensitivity = 0.5f; private Vector3 moveDir = Vector3.zero; // Use this for initialization void Start () { } void FixedUpdate () { float rotY = Input.GetAxis ("Mouse X") * MouseSensitivity; transform.Rotate (0, rotY, 0); } // Update is called once per frame void Update () { CharacterController controller = gameObject.GetComponent<CharacterController> (); if (controller.isGrounded) { moveDir = new Vector3 (Input.GetAxis ("Horizontal"), 0, Input.GetAxis ("Vertical")); moveDir = transform.TransformDirection (moveDir); moveDir *= MoveSpeed; if (Input.GetButtonDown ("Jump")) { moveDir.y = JumpHeight; if (Input.GetButtonDown ("Sprint")) { //Hier der Versuch, die Geschwindigkeit beim Drücken von "Sprint" zu erhöhen. MoveSpeed = 30f; } } } moveDir.y -= gravity * Time.deltaTime; controller.Move (moveDir * Time.deltaTime); } } Danke für eure Hilfe
  11. Vielen Dank. Hat dank euren Antworten geklappt. Ich schaue mir auch das Video noch an. Schönen Abend noch. Ihr habt mir sehr geholfen
  12. Ok, danke. Ich muss jetzt aber zugeben, dass ich das nicht so ganz verstehe. Wie definiere ich dort denn das Objekt und wie bestimme ich, dass der Befehl mit einem Linksklick ausgeführt wird?
  13. Hallo, Ich habe derzeit ein Problem. Ich brauche für ein kleines Projekt die Möglichkeit, Objekte in der Spielwelt mit einem Mausklick anzusprechen. Der Spieler (2D) läuft in dem Level herum und findet ab und zu Objekte, die mit einem Ausrufezeichen markiert sind. Dort soll er mit der Maus (Linksklick) die Objekte anklicken. Wenn das geschieht, soll ein Canvas geöffnet und ein kleiner Sound abgespielt werden. Mir fehlt die Möglichkeit, diese Objekte mit der Maus anzusprechen. Hat dort jemand eine Lösung? Ich komme da leider nicht weiter. PS: Nach Möglichkeit, sollen die Objekte, danach zerstört werden. Danke schonmal, an alle.
  14. Oh Sorry, habe damals die letzte Nachricht wohl nicht angezeigt bekommen. Wenns noch hilft, ich habe Die Nummern so vergeben, wie die Reihenfolge im Buid war. Wenn also die 2. Sceene im Build einen Speicherpunkt hatte, bekam diese die Speicherpunktnummer 2. Manchmal hatte Sceenen ausgelassen, wenn diese keinen Speicherpunkt hatten. So waren auch nicht alle Nummern vergeben, was aber kein Problem darstellte.
  15. Das Problem hat sich erledigt. Da muss man statt "UpArrow" einfach "up" einsetzen. Aber danke, für den Tipp. Ich glaube das mit den KeyCodes, mache ich.