Jump to content
Unity Insider Forum

Jomnitech

Members
  • Content Count

    298
  • Joined

  • Last visited

  • Days Won

    14

Jomnitech last won the day on July 15 2019

Jomnitech had the most liked content!

Community Reputation

33 Excellent

About Jomnitech

  • Rank
    Advanced Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. wenn du weisst wo die Fuction/Void ist, kannst du ja ein Debug.Log("test"); einfügen, wenn du dann in der Console das anklickst, müsstest du sehen wo es ausgeführt wurde und woher es angesprochen wurde. in meinem Fall hier wurde die Function Shoot() im WeaponBullets Script ausgeführt und vom PlayerMovement2D Script angesprochen.
  2. naja, einfach die derzeitige Position dazu addieren. z.B. transform.position = new Vector3 (0f,0f, this.transform.position.z+500f); Oder verstehe ich deine Frage falsch?
  3. @Zer0Cool @Thariel Vielen Dank für eure Antworten, hab jetzt mal eure Antworten kombiniert und bin zufrieden damit. Weil es eh nicht runtime passiert ist es auch wumpe wie performant es ist. ------------------------------------------------------- Wie definiere ich den Klassen? Muss ich dafür einfach ein Script machen mit der entsprechenden Klasse und es den Objekten hinzufügen? Hab das jetzt mal mit Tags gemacht 🙃, funktioniert soweit. 1. Kann man physik Abfragen durchführen im Editor mode? 2. Da weiss immer noch nicht wie ich die Spawn Points wieder freigeben soll wenn ich was händisch im Editor lösche, oder verstehe ich da etwas falsch? 3. Da wusste ich nicht wie ich was in die Liste bekomme, aber mit dem was Zer0Cool gepostet hat funktionierts. Jetzt kann ich einfach die Liste durchzappen und schauen ob sich was überschneidet.
  4. Hab das jetzt selber noch nie verwendet, aber mal in nem tut gesehen, finde aber das Video nicht mehr. Wenn du unter Edit>Render Pipeline>Upgrade Project Materials to High Definition Matierials, müsste Unity alle nicht kompatiblen Materials mit HDRP Shaders versehen.
  5. Habe auch daran gedacht alles in ein Array oder Liste zu speichern. Weiss aber nicht wie ich dann das entsprechende Object aus der Liste gelöscht bekomme wenn ich es manuell in der Scene lösche.
  6. Hallo Zusammen Ich erstelle derzeit einen Level Generator, der mir an zufälligen Position diverse Prefabs und Hintergründe einfügt. Da alles zufällig aus einer hand voll Prefabs ausgewählt wird, kommt es vor das zwei, drei mal das gleiche Asset nebeneinander liegt, oder es auch einfach so unschön aussieht. Diese lösche ich dann manuell aus der Scene raus, und genereiere sie neu. Dabei kommt es natürlich vor das er an einer Stelle wo schon etwas ist, erneut etwas spawnt. Nun zu meiner Frage: Gibt es eine möglichkeit abzufragen ob an der zu spawnenden stelle schon ein GameObject in der Scene ist?
  7. Das Problem bei der build in prozeduralen Skybox ist der Horizont. Kenne keine Möglichkeit den anders einzustellen. Falls du dich mit Shadern auskennst, ist hier der originale Code für den Unity Skybox Shader, kann man sicher irgendwie editieren, ich kanns nicht https://github.com/TwoTailsGames/Unity-Built-in-Shaders/blob/master/DefaultResourcesExtra/Skybox-Procedural.shader Altenativ habe ich noch einen Lizenfreien Custom Shader ohne Horizont gefunden, finde da aber den Farbverlauf nicht so schick. https://github.com/PopThosePringles/Unity-Procedural-Skybox-Shader-No-Horizon Du kannst auch eine 6-Sided Skybox verwenden, dann hast du das Problem nicht, lizenfreie Bilder dafür findet man recht gut bei Google. Oder ganz simpel statt der Skybox einfach eine fixe Farbe (solid Color) verwenden. Kann man bei den Main-Camera Einstellungen einstellen was verwendet werden soll.
  8. Ich nehme an du meinst das fertige Spiel im Fenstermodus frei zu Skalieren? Das geht, dafür musst du unter Edit>Project Settings > Player; bei Resolution and Presentation das Häkchen bei Resizable Window setzen.
  9. Klingt für mich nach Tischbillard. Weiss aber nicht ob ich dein Problem richtig verstehe. Irgendwo in der Scene hast du doch dein Objekt "Tisch", ob da jetzt die Löcher teil des meshes sind ist doch wumpe. Du kannst entwerder deinem Tisch-Objekt Collider hinzufügen und diese dann über die center Werte an die Position setzen wo auch die Löcher sind Oder alternativ Kannst du deinem Tisch, neue Child Objekte hinzufügen(rechtsklick auf deinen Tisch und dann Create Empty), welche den Collider haben und diese dann über die Transform Komponente an die gewünschte Position schieben. Oder verstehe ich dein Problem falsch?
  10. Du könntest z.B. Sprite Mask verwenden, welche dann dein Nebel-Sprite an der bereits erkundeten Stellen ausschneidet?
  11. Wenn es einfach nur lila ist, hast du einen nicht kompatiblen Shader drauf. Um das zu ändern, klicke auf das entspechende Material, wähle oben bei Shader "Universal Render Pipeline" und dan z.B. den Lit Shader. Bedenke einfach das wenn du keinen 2d Shader verwendest, dein 3d Objekt nicht mit 2d Licht interagiert. Sprich, es sieht immer gleich aus, egal ob du das 2d Licht dimmst oder den Farbton änderst. Ob man sich dafür einen eigenen Shader im Shader-Graph basteln kann weiss ich nicht.
  12. Alles klar, viel Spass noch bei deinem Projekt.
  13. Auch gut :) Weiterhin viel Erfolg. Wäre natürlich noch interessant zu wissen, wie du es gelöst hast. Falls mal jemand das gleiche Problem hat und den Thread hier durchliest, für die Nachwelt und so.
  14. @xDeejox Der Rigidbody ist nur eine Komponente, ob du den für deine Bewegung verwendest, oder nur für das Triggerverhalten ist im Prinzip egal. Du kannst problemlos einen Rigidbody hinzufügen den auf Kinematic setzen und dein Spieler weiterhin über Udemy Script über die Transforms bewegen, dazu musst du nichts "umscripten". Wenn sich da nix tut, hätte ich gesagt das der Layer der dem Spieler zugewiesen ist und der Layer der dein Teleporter hat, in der Physic2d Einstellungen nicht miteinander reagieren. In dem Fall einfach mal schauen welcher Layer dem Spielder und welcher Layer dem Teleporter zugewiesen ist und ob die sich in den Einstellungen(Edit>Project Settings>Physic2d) kreuzen. ------------------------------------------------------------------------------------------------------------------------------------------- Variante 2 ------------------------------------------------------------------------------------------------------------------------------------------- Falls du aber gänzlich auf die Physic verzichten möchtest, kann man das auch tun. Dazu hat @Sascha mir mal was schickes geschrieben. Das funktioniert dann über eine Distanzabfrage. Nachteil hierbei, du kannst keinen beliebigen Bereich auswählen, sondern hald eben nur den Umkreis abfragen. Originalbeitrag findest du hier: Ich hab das mal auf 2d runtergebrochen, sieht dann etwa so aus: using System.Collections; using System.Collections.Generic; using UnityEngine; public class TeleportRadius : MonoBehaviour { [Header("Hier Zielort Teleporter einfuegen")] public GameObject otherTeleporter; // Im Inspektor den Zielteleporter hier einfuegen. [Header("Hier den Spieler einfuegen")] public Transform player; // Referenz zum Spieler ob er in der naehe ist. [Header("legt den Bereich fest ab wo der Teleporter funtioniert")] public float teleporterRadius = 1f; private TeleportRadius scrTeleport; [HideInInspector] public bool hasTeleportet = false; private void Start() { scrTeleport = otherTeleporter.GetComponent<TeleportRadius>(); } public static bool CheckIfCloserThan(Vector2 a, Vector2 b, float maxDistance) { var maxDistanceSquared = maxDistance * maxDistance; var distanceSquared = (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y); return distanceSquared <= maxDistanceSquared; } private void FixedUpdate() { var isInside = CheckIfCloserThan(transform.position, player.position, teleporterRadius); if (isInside && !hasTeleportet) { OnEnterRange(); } else if (!isInside && hasTeleportet) { OnExitRange(); } } private void OnEnterRange() { scrTeleport.hasTeleportet = true; player.transform.position = otherTeleporter.transform.position; } private void OnExitRange() { hasTeleportet = false; } // Zeichnet einen Kreis der so gross ist wie der "Trigger" Bereich private void OnDrawGizmos() { Gizmos.DrawWireSphere(transform.position, teleporterRadius); } } In dieser Variante brauchst du weder Layer noch Rigidbodys noch sonst was. Alles was du brauchst ist zusätzlich zur Referenz zum anderen Teleporter, auch eine Referenz zum Spieler. Diesen einfach in das entsprechende Feld reinziehen. Je nach dem wie gross bzw. wie viele Teleporter du am Ende im Spiel hast, kann man das auch automatisieren, für den Anfang aber lassen wir das mal. Wichtig zu wissen ist auch, das erst dann teleportiert wird, wenn der Mittelpunkt deines Spielers im Kreis ist. DemoPackage findest du im Anhang. TopDownRangeTeleporter.unitypackage
  15. Ich würde dir sehr stark empfehlen, solche Bewegungen zu animieren. Unity hat einen sehr schickes Animationstool. Bewegungen zu coden macht in meinen Augen nur Sinn, wenn es Interaktiv sein soll (z.B. Playercontroller) oder Physikbasiert ist.
×
×
  • Create New...