Jump to content
Unity Insider Forum

MustafGames

Members
  • Content Count

    417
  • Joined

  • Last visited

  • Days Won

    4

MustafGames last won the day on February 20 2019

MustafGames had the most liked content!

Community Reputation

10 Gut

About MustafGames

  • Rank
    Advanced Member

Recent Profile Visitors

1,339 profile views
  1. Soweit ich das interpretieren kann, static = fest und nicht veränderbar (ein statisches GO, bleibt an der Stelle), wenn man also einen Script schreibt und alles static macht (Leben des Spielers z.b.) macht das keinen Sinn.
  2. Ok danke nun bin ich schlauer Wenn man ScriptableObjects nutzt um in der Laufzeit ständig (z.b jeden Frame) Daten ein und auszulesen, gibt es da Performance Tipps oder sollte man sowas grundsätzlich lieber nicht tun? Edit: Also meine Methode wäre jetzt: public static void DoSomething (LayerMask layer) { Physics2D.Raycast(pos, irgendwas, irgendwas, layer)... } //In einem anderen Script wird dann das benutzt: void Update () { DoSomething(1 << 0); //Müsste ja dann NUR der Default Layer sein? } Stimmt das so? Bei gameObject.layer == layer.value?
  3. Ok in einer statischen Methode kann ich dann einfach "1 << 0" für Default schreiben?
  4. Danke für die ausführliche Antwort, also wäre das so richtig, da bei gameObject.layer ein int angegeben ist? if (gameObject.layer == Layermask.NameToLayer("Default")) { } Mein Problem ist ich habe eine "IsBlocked" Abfrage und die wird fast jeden Frame ausgeführt, was empfehlst du da?
  5. Gruß, habe leider vergessen wie das nochmal war, mit dem LayerMask Zeug. Ich dachte es wäre so richtig: RaycastHit2D hit = Physics2D.Raycast(pos, dir, range, 1 << LayerMask.NameToLayer(layer)); Physics2D.OverlapBox(pos, scale, 0, 1 << LayerMask.NameToLayer(layer)); Wenn man das "1 <<" weglässt was passiert dann? RaycastHit2D hit = Physics2D.Raycast(pos, dir, range, LayerMask.NameToLayer(layer)); Physics2D.OverlapBox(pos, scale, 0, LayerMask.NameToLayer(layer)); Beim prüfen von 2 oder 3 verschiedenen Layern was macht man da? MfG Mustaf
  6. Gruß mit MagicaVoxel arbeite ich bereits und soweit ich weiß gibt es dafür auch Scripts/Addons die auf MagicaVoxel bassieren, vielleicht kann jemand kreatives da einen Spritesheet to Vox Konverter schreiben, man nimmt die 4 Seitenansichten und kalkuliert dann darauß die Voxel, oben und unten bleibt in diesem Fall leer und wird nicht beachtet. Bin am testen ob es da eine automatische Möglichkeit gibt da es viele super tolle Spritesheets gibt welche im Voxelformat also (Pixel zu Würfel) einfach toll Aussehen würden.
  7. Gruß, im Anhang findet man ein Bild von dem Spritesheet welches ich gerne als 3d Figur hätte. Gibt es irgend eine Software die automatisch aus (vorne, hinten, seiten Bilder) ein 3d Model erstellt oder ähnliches? Wäre echt cool wenn jemand von euch sowas kennt oder einen Ansatz hat wie man das mit wenig Zeit schafft, selbst modellieren fällt mir direkt nur ein Voxel Programm ein aber das ist sehr aufwendig. MfG Mustaf
  8. Danke ist mir überhaupt nicht aufgefallen, jetzt klappt es xD Kann eigentlich gelöscht werden hier.
  9. Gruß, irgendwie kotzt ein das manchmal an, obwohl es logisch ist es trotzdem nicht funktioniert. public static List<GameObject> GetAllObjectsInDistance (Vector2 pos, string layer, float distance) { Collider2D[] hitColliders = Physics2D.OverlapCircleAll(pos, distance, 1 << LayerMask.NameToLayer(layer)); Debug.Log(hitColliders.Length); //= new Collider2D[100]; //int number = Physics2D.OverlapCircleNonAlloc(pos, distance, hitColliders, 1 << LayerMask.NameToLayer(layer)); List<GameObject> targets = new List<GameObject>(); foreach (var i in hitColliders) { targets.Add(i.gameObject); } Debug.Log(targets.Count); return targets; } Warum wird Debug.Log egal welches von beiden nicht ausgeführt, wenn ich folgendes mache: List<GameObject> items = API.GetAllObjectsArroundTarget(target.transform.position, distance, "Items"); Es ist sogar 1 Item immer da, dieses wird voll ignoriert und das ganze (bis auf Debug.log) funktioniert auch nur wenn mindestens 2 Collider da sind aber warum? Mfg Mustaf
  10. #Push Mein Fehler, hatte vergessen es auch als Coroutine zu starten xD
  11. Ja das stimmt bei einer großen Anzahl an verschiedenen Sachen ist es nicht so toll.
  12. Gruß, habe folgende Methode für meine Sammlung an nützlichen Methoden: public static IEnumerator StopCoroutineAfterDelay (Coroutine cor, float delay) { yield return new WaitForSeconds(delay); Camera.main.GetComponent<MonoBehaviour>().StopCoroutine(cor); yield break; } diese stopt die Coroutine aber leider nicht auch wenn ich statt Camera.main die Klasse angebe wo die Coroutine auch gestartet wurde. Als statische Methode wäre es schon ganz sinnvoll, sonst hätte ich in 10 Scripts die selbe Methode drin. Woran liegt das? Mfg Mustaf PS: Mir ist gerade aufgefallen wenn ich hier das DarkTheme auswähle als Webseitendesign, dann ist die Schrift vom "Folgen Button (wo man bei Antworten benachrichtigt wird)" unsichtbar.
  13. Danke klappt super, genau das was ich wollte. In nachhinein ist mir aber auch noch eingefallen, man könnte es sich ja einfacher machen und einfach paar mal die selben Objekte in die Liste setzen und so die Wahrscheinlichkeit einstellen und dann Random(0, listsize) nehmen.
  14. Gruß, using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using System.Runtime.Serialization.Formatters.Binary; using System.IO; public class SaveAndLoad : MonoBehaviour { public void Save (Object data, string filename) { BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Create(Application.persistentDataPath + "Saves/" + filename + ".dat"); data.score = score; data.levelcount = levelcount; bf.Serialize(file, data); file.Close(); } public void Load (string filename) { if (File.Exists(Application.persistentDataPath + "/playerInfo.dat")) { BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Open(Application.persistentDataPath + "Saves/" + filename + ".dat", FileMode.Open); PlayerData data = (PlayerData) bf.Deserialize(file); file.Close(); score = data.score; levelcount = data.levelcount; } } } Habe dein Code jetzt nicht runtergeladen, am besten nutzt die Kopie & Paste und bei Beitrag bearbeiten das <> Symbol um deinen Code zu posten. Diesen hier habe ich im Netz gefunden und dieser Sieht bis auf PlayerData (was ein Custom Script ist) ganz sinnvoll aus, laut dem Schreiber kann man mit diesem Code auf jeder Plattform seine Sachen speichern, vielleicht kann mir jemand dazu eine Info geben.
  15. Gruß, habe da mal wieder etwas gefunden wo ich nicht weiter komme (Mathe halt): Angenommen wird haben eine Liste mit 8 Objekten, dann soll eine Methode per Zufall entscheiden welches Objekt genommen wird, dieser Zufall soll noch beeinflusst werden von der Position des Objektes in der Liste (Objekt 1 hat eine höhere Wahrscheinlichkeit als Objekt 2 usw..). public static int GetPercentageByList (int listSize) { if (listSize > 0) { for (int i = 0; i < listSize; i++) { float chance = (100.0f / (float)i) * 0.01f; if (Random.value <= chance) { return i; } } } return 0; } Liege ich mit meiner Variante richtig? MfG Mustaf.
×
×
  • Create New...