Jump to content
Unity Insider Forum

Jomnitech

Members
  • Content count

    114
  • Joined

  • Last visited

  • Days Won

    3

Jomnitech last won the day on July 20

Jomnitech had the most liked content!

Community Reputation

10 Gut

About Jomnitech

  • Rank
    Advanced Member

Recent Profile Visitors

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

  1. Jomnitech

    [Gelöst] Raycst vs. onTriggerEnter hit referenz

    @thewhiteshadow @Sascha Vielen Dank für euere Antworten, hilft mir schon mal enorm weiter. Eigentlich gefällt mir die OnCollisionEnter Variante ganz gut, da ich dann automatisch den richtigen Bezugspunkt habe, egal ob es eine Kiste ist, welche keine Hitboxen hat, oder ein Gegner welcher ev. viele verschachtelte Hitboxen haben kann. Muss ich mal ausprobieren ob ich das hindeichseln kann das er die Kollision triggert ohne das er den Gegner physikalisch rumschiebt. Beim Raycast kann ich ja eine layerMask bestimmen die nicht mit den Physik Einstellungen übereinstimmen muss. Oder ev. doch den Raycast ohne Physik verwenden. Muss ich ausprobieren was sich besser eignet.
  2. Hallo Zusammen Ich habe ein kleines Problem das ich nicht wirklich verstehe. Ich habe einmal eine Schusswaffe die mit Raycast funktioniert und einmal eine Nahkampfwaffe die über Trigger event läuft. Ich habe ein Gegner namens "Enemy1" der hat Child Objekte Namens "HitBox1,HitBox2". Wenn ich mit dem Raycast eine Hitbox treffe, bekomme ich als rückmeldung nicht HitBox1 oder HitBox2 sondern Enemy1. Wenn ich mit der Nahkampfwaffe den Gegner treffe bekomme ich als Feedback HitBox1 oder Hitbox2 heraus. Warum ist das so? Macht mir etwas Probleme weil ich jeweils die Stats holen will um Schaden zu machen. //Raycast if (Physics.Raycast(transform.position,transform.right, out hit, range,layer_mask)) { Debug.Log(hit.transform.name); CharacterStats target = hit.transform.GetComponent<CharacterStats>(); if (target != null) { target.TakeDamage(_finalDamage); } } //Trigger void OnTriggerEnter(Collider other) { Debug.Log(other.transform.name); CharacterStats target = other.transform.GetComponent<CharacterStats>(); if (target != null) { target.TakeDamage(_finalDamage); } } Die Layers sind i.O. ich treffe auch mit dem Raycast effektiv nur die Hitbox und nicht den Enemy1 selbst.
  3. Sieht für mich so aus als ob zwei Objekte sich überlagern. Wenn das der Fall ist hast du sogenanntes Z-Fighting. Du solltest die Objekte so anorden das sie sich nicht überlagern.
  4. Jomnitech

    Shader Einstellungen runtime ändern (gelöst)

    Falls es jemanden interessiert, habe ich hier eine Lösung gefunden, mit der man Objekte langsam verschwinden lassen kann und das Objekt trotzdem noch Schatten receivet (was bei Transparent ja nicht der Fall ist) und keine zusätzliches Material benötigt und keine zusätlichen Drawcalls verursacht: Hiermit lässt sich der Gewählte Cutout Shader ganz einfach Runtime modifizieren(am schönsten wird mit einem Double Side Shader) ohne die Batches zu nichte zu machen. rend.material.SetFloat("_Cutoff", cutoutValue);
  5. Jomnitech

    Shader Einstellungen runtime ändern (gelöst)

    Ja, hat alles das selbe Material, die Batches sind auch i.O. bis es vom Script auf Fade gesetzt wird, dann scheint es für jedes Objekt ein separates Material zu erzeugen ohne diese zu batchen. Also lässt sich das wohl via Script nicht so einfach lösen. Dann lass ich das wie gehabt und wie du sagst eben mit zwei Materials. Trotzdem vielen Dank für deine Antwort.
  6. Jomnitech

    Mesh VS Terrain

    Hast du dir schon einmal ProBuilder oder Polybrush angeschaut? Ist beides Free und soll glaub ich auch in Zukunft bestandteil von Unity werden wie z.B. TextmeshPro. https://assetstore.unity.com/packages/tools/modeling/probuilder-111418 https://assetstore.unity.com/packages/tools/modeling/polybrush-beta-111427 Habe leider (noch) keine Erfahrung damit, gibt aber YT tuts die mans sich anschauen kann.
  7. Jomnitech

    Shader Einstellungen runtime ändern (gelöst)

    @Sascha Hatte ich anfangs sogar gemacht, aber hatte dann immer nullReference Fehler(wahrscheinlich irgendwo vertippt), deswegen habe ich dann das Material direkt reingezogen, dachte mir wenn ich das Material direkt vom ChildObjekt selbst wähle klappt das schon. Wie auch immer, funktioniert soweit, generiert nur leider massig DrawCalls.
  8. Jomnitech

    Shader Einstellungen runtime ändern (gelöst)

    Erst mals vielen Dank für deine Antwort. Bekomme das aber irgnedwie nicht richtig hin. Habe es zwar soweit dass er Runtime den Shader auf Fade wechselt, aber dann ändert er das Material grundlegend für alle, statt ein neues Material zu generieren. Aus den ganzen Disable- und EnableKeywords bin ich nicht schlau geworden, hat sich irgendwie nie etwas getan. Nur material.SetFloat("_Mode", 2.0f); hat dan den Mode auf Fade geändert. Aber wie gesagt, ändert ers eben für alle Objekte die das Material teilen.
  9. Jomnitech

    Textur passend auf Plane mappen

    Hatte das Thema mal hier falls du das meinst: Edit: Streck doch deine Textur auf ein quadratisches Seitenverhältnis z.B. 1024x1024 600x600p, wenn du dann die Plane auf dein gewünschte grösse von 1:2 stauchst müsste sich die Textur ja wieder in gewünschter Auflösung darstellen?
  10. Hallo Zusammen Kann mir jemand sagen wie man den Standard Unity Shader via Script von Opaque auf Fade umstellen kann? Finde im Netz irgendwie nichts dazu. Hintergrund ist wie folgt: Ich möchte das zerstörte Objekte langsam ausblenden. Wenn ich aber den Shader standardmässig auf Fade stelle, sieht man keine Schatten auf den Objekten, dadurch wirken sie etwas deplaziert. Wenn die Objekte zerstört werden, soll die Shadereinstellung der einzelnen Objekte geändert werden, weil irgendwie für deses Objekt zwei Materials mit verschiedenen Einstellungen zu machen find ich irgendwie doof. Oder gibt es eine elegantere Lösung?
  11. Jomnitech

    Animiertes Licht an 3D-Wänden

    Ich denke das wird man am besten mit einem Shader bewerkstelligen können. Mit dem neuen Shader Graph kann man das auch ohne Programmierkenntnisse machen. Habe den selber noch nicht benutzt, aber gibt einige YT tuts dazu wie man was machen kann. Ansonsten ev. etwas aus dem Unity Store ausprobieren? z.B. https://assetstore.unity.com/packages/vfx/shaders/fullscreen-camera-effects/mk-glow-free-28044
  12. Jomnitech

    Importieren von fbx datein

    Kannst du dem Objekt im Inspektor nicht das Material zuweisen?
  13. Jomnitech

    Raycast Hit Point verschoben (gelöst)

    @Sascha Habe ich nur gemacht damit es etwas ersichtlicher ist was ich meine, ist ansonsten schon ein 3d Game. Hat mir sehr weitergeholfen. War ein Denkfehler von mir, da der Raycast ja immer von der 0 Position aus startet. Ich bin irgendwie davon ausgegangen, dass bei Transform right der Raycast auch von der rechten Seite aus startet, weiss auch nicht warum 🙃. Wie dem auch sein, als transform Referenz die Mündung statt die Waffe selbst gewählt und voilà, alles so wie es sein soll. Vielen Dank für deine Hilfe
  14. Jomnitech

    Raycast Hit Point verschoben (gelöst)

    @thewhiteshadow Verstehe deine Antowrt nicht ganz. Da ist kein Rigidbody drauf, ist nur ein Raycast, keine physikalische Kugel.
  15. Hallo Zusammen Habe ein kleines Problem mit einem Raycast, und zwar scheint es so als ob der Impact Point sich verzieht wenn ich ein Objekt treffe. Komm gerade nicht drauf wo der Fehler liegt, ev. kann mir jemand helfen? Script sieht wie folgt aus: void Shoot() { IsShooting = true; Debug.Log("shoot"); //Substract Ammo currentAmmo--; // RaycastHit hit; for (int i = 0; i < MultiBullets; i++) { currentBullets++; // Weapon Scattering / Waffenstreuung //transform.localEulerAngles = new Vector3(0, 0, Random.Range(-WScattering, WScattering)); if (Physics.Raycast(transform.position, transform.right, out hit, range,layer_mask)) { Debug.Log(hit.transform.name); CharacterStats target = hit.transform.GetComponent<CharacterStats>(); if (target != null) { _finalDamage = Mathf.Abs( Random.Range(_minDamage, damage)+(damage*.01f* pStats.rangeDamage.GetValue())); target.TakeDamage(_finalDamage); } //Tracer Effect GameObject tracerGO = Instantiate(TracerEffect, effectSpawner.transform.position, transform.rotation); TracerTarget effect = tracerGO.GetComponent<TracerTarget>(); effect.startMarker = effectSpawner.transform.position; effect.endMarker = hit.point; Destroy(tracerGO, 3f); if(hit.transform.tag == "Enemy") { //Blood Effect GameObject bloodGO = Instantiate(bloodEffect, hit.point, Quaternion.LookRotation(hit.normal)); } else { //Impact Effect GameObject impactGO = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal)); EasyDecal decal = EasyDecal.ProjectAt(bulletHole.gameObject, hit.collider.gameObject, hit.point, hit.normal); } } else { print("noHit"); //Tracer Effect GameObject tracerGO = Instantiate(TracerEffect, effectSpawner.transform.position, transform.rotation); TracerTarget effect = tracerGO.GetComponent<TracerTarget>(); effect.startMarker = effectSpawner.transform.position; effect.endMarker = effectSpawner.transform.position + transform.right * range; Destroy(tracerGO, 3f); } //Add Force to hit Object if (hit.rigidbody != null) { hit.rigidbody.AddForce(-hit.normal * impactForce); } } if (currentBullets >= MultiBullets) { currentBullets = 0; } } Fehler sieht so aus: Links: Ich schiesse am Objekt vorbei, Raycast ist gerade (so wie es sein soll) Rechts: Ich schiesse auf das Objekt, Raycast hit.point ist weiter unten. Edit: Ev. noch anzumerken dass ich vorher transform.forward statt transform.right erwendet habe und da ist es mir nie aufgefallen, doch da ich jetzt die Waffen überarbeitet habe, habe ich das so angepasst, müsste aber doch trotzdem gehen?
×