Ultimotick Geschrieben 6. Mai 2022 Melden Share Geschrieben 6. Mai 2022 Ich versuche ein mein erstes shooter game zu erstellen die Pistole soll einen Sound und Einschussloch hinterlassen das hier ist mein Entwurf. Was habe ich falsch gemacht ? Warum funktioniert das nicht? Würde mich über jeden Tipp oder Verbesserungsvorschlag freuen. 👍 Pistole.cs Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 6. Mai 2022 Melden Share Geschrieben 6. Mai 2022 Moin! vor 1 Stunde schrieb Ultimotick: Warum funktioniert das nicht? Du solltest immer erstmal die Fehlermeldungen anschauen. Und wenn du eine hast und sie dir nicht weiterhilft, solltest du sie zu deiner Frage mit dazu geben. Sonst müssen wir ja raten, was los ist. Wenn du die Fehlermeldung allerdings schon hast, dann können wir sie dir ggf. einfach erklären. Dein Problem liegt hier: Ray pos = new Ray(...); [...] if(Physics.Raycast(Camera.main.ScreenPointToRay(pos))) "pos" ist ein Ray (und kein Vektor, wie der Name vermuten lässt). Du versuchst hier, einen Ray in ScreenPointToRay reinzustopfen, was aber nicht geht. Die Methode will einen Vector3 haben, keinen Ray. Schreib stattdessen einfach if(Physics.Raycast(pos)) Das sollte gehen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Ultimotick Geschrieben 7. Mai 2022 Autor Melden Share Geschrieben 7. Mai 2022 Vielen Dank👍, die Fehler sind jetzt weg und Sound und Clone vom Bullet hole kommen auch. Nur der Clone entsteht bei 0 0 0 und nicht bei dem Hit Point .🤔 Ich weiß das das jetzt fast so ist als ob du (oder Andere) den ganzen Code schreiben würdest, aber als Blutiger Anfänger kann ich leider nichts anderes machen außer nochmal zu fragen. Was ist falsch gelaufen ? PS: Fehlermeldungen gibt es diesmal nicht. Pistole.cs Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
chrische5 Geschrieben 7. Mai 2022 Melden Share Geschrieben 7. Mai 2022 Hallo Es macht deutlich mehr Sinn, den Code hier in codetags zu machen. Dann muss man nix runterladen und die Hürde ist niedriger! Christoph Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Ultimotick Geschrieben 7. Mai 2022 Autor Melden Share Geschrieben 7. Mai 2022 Und wie macht man das? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
chrische5 Geschrieben 7. Mai 2022 Melden Share Geschrieben 7. Mai 2022 Hallo Wenn du einen Beitrag schreibst, hast du über dem Eingabefeld eine Leiste mit diversen icons. Eins davon ("<>") ist für das Einfügen von code gedacht. Christoph Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Ultimotick Geschrieben 7. Mai 2022 Autor Melden Share Geschrieben 7. Mai 2022 using UnityEngine; public class Pistole : MonoBehaviour { public GameObject Bullet_Hole; public AudioSource Shootsound; public float shootspeed; private float waittime; private RaycastHit hit; // Update is called once per frame void Update() { shoot(); } void shoot() { if (Input.GetMouseButtonDown(0) && waittime <= 0) { waittime = 1; Ray pos = new Ray(Camera.main.transform.position, Camera.main.transform.forward); Shootsound.Play(); if (Physics.Raycast(pos)) { Instantiate(Bullet_Hole, hit.point, Quaternion.FromToRotation(Vector3.forward, hit.normal)); } waittime -= Time.deltaTime * shootspeed; } } } Richtig so? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 7. Mai 2022 Melden Share Geschrieben 7. Mai 2022 vor 24 Minuten schrieb Ultimotick: Richtig so? Jap vor 3 Stunden schrieb Ultimotick: Ich weiß das das jetzt fast so ist als ob du (oder Andere) den ganzen Code schreiben würdest, aber als Blutiger Anfänger kann ich leider nichts anderes machen außer nochmal zu fragen. Was ist falsch gelaufen ? Das ist okay. Wer hier hilft, hilft gerne. Und wir erklären ja eher, was los ist und wie du das Problem lösen kannst. Solange du was lernst und nicht einfach "dein Script abholst und wieder gehst", ist alles in Ordnung Aber mal zum Problem. Der Code sieht in dieser Hinsicht in Ordnung aus. Die letzte Anweisung ("waittime -= ...") sollte vielleicht noch aus dem if-Block raus, aber das hat ja mit der Position nix zu tun. Ich sehe zwei mögliche Fehler: Dein Ray trifft irgendetwas unerwartetes. Wäre komisch, dass da 0,0,0 als Position herauskommt, aber möglich wäre sowas generell trotzdem. Wenn du mit Breakpoints debuggen kannst, kannst du mal einen Breakpoint auf die Instantiate-Zeile setzen. Wenn nicht, pack einfach mal diese Zeile vor das Instantiate: Debug.Log(hit.point); // Zeigt den Hitpoint in der Konsole an Mit beiden Varianten findest du den Wert von hit.point heraus. Steht in der Konsole (0,0,0) oder etwas anderes? Sollte hit.point korrekt sein, dann wird das Objekt auch auf der richtigen Position gespawnt. Wenn das Ding trotzdem von Anfang an woanders ist, kann das nur noch daran liegen, dass irgendein Code (vielleicht ja nicht einmal dein eigener!) das Objekt sofort nach dem Spawnen wieder verschiebt. Was hast denn du so für Komponenten auf deinem Einschlussloch-Prefab? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Ultimotick Geschrieben 7. Mai 2022 Autor Melden Share Geschrieben 7. Mai 2022 Die einzige Komponente die ich auf dem Einschussloch habe ist ein Skript was das Einschussloch nach 10 min löscht oder es löscht wenn das objekt auf dem es liegt verschwindet. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Ultimotick Geschrieben 7. Mai 2022 Autor Melden Share Geschrieben 7. Mai 2022 Daran liegt es nicht. Ich habe es vom Bullet_hole entfernt und es ist nichts passiert. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 7. Mai 2022 Melden Share Geschrieben 7. Mai 2022 Stimmt denn der hit.point-Wert? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Ultimotick Geschrieben 8. Mai 2022 Autor Melden Share Geschrieben 8. Mai 2022 vor 12 Stunden schrieb Sascha: Stimmt denn der hit.point-Wert? ja eigentlich schon auch wenn bei meinem einem 3d Objekt die ray einfach durch geht bei allem andrem funktioniert es aber. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.