Jump to content
Unity Insider Forum

Zer0Cool

Members
  • Posts

    2,040
  • Joined

  • Last visited

  • Days Won

    145

Zer0Cool last won the day on September 14 2020

Zer0Cool had the most liked content!

1 Follower

About Zer0Cool

  • Birthday 01/04/1974

Profile Information

  • Gender
    Male
  • Location
    Germany

Contact Methods

  • Skype
    zer0f0rce

Recent Profile Visitors

11,522 profile views

Zer0Cool's Achievements

Advanced Member

Advanced Member (3/3)

416

Reputation

  1. Im Model Import-Fenster auf den Tab Animation: Bei der Animation dann Haken rein bei "Look Time" bzw. "Loop Pose" Die grünen Kreise (= ok) zeigen an, ob die Frames für den Loop korrekt gesetzt sind.
  2. Mal ein Videowunsch von mir. Könntest du mal ein Video machen (oder mehrere) für einen totalen Blender-Änfänger mit folgendem Inhalt: - Erklärung der verschiedenen Version - Installation - UI-Basics, also Menüpunkte oder Tastenkürzel die man immer wieder braucht (Einstellung aller UI-Fenster) - Erklärung wichtiger Operationen - Erstellung einiger simpler Geometrie: Treppen, Wände, kleines Haus, Fässer, Felsen (einfache Geometrie die man in einem Spiel so braucht, muss ja nicht gleich ein ganzes Schloss sein) - Texturing, UV-Mapping einzelner einfacher Objekte - Erstellung eines Texturatlas für X-Objekte
  3. Schönes Video, dieses Tool kannst ich noch nicht, warum deaktivierst du sRGB im Diffuse-Slot?
  4. Schönes Ding, dann setz ich da doch mal ein Kommentar drunter damit der Algorithmus es findet
  5. Falls es jemand gebrauchen kann, hier eine kleine Klasse die den Spieler mehrere zuvor zugewiesene Ziele betrachten lässt. Der Spieler dreht dabei seinen Körper und seinen Kopf in Richtung des Ziels welches am besten mit seiner Sichtlinie übereinstimmt. Die Distanz des Ziels wird dabei ebenfalls mit betrachtet, allerdings nur sehr rudimentär. Ich habe noch zusätzlich eingebaut, dass der Spieler seinen rechten Arm in Richtung des aktuellen Ziels bewegt (lässt sich deaktivieren über eine Property). using UnityEngine; using System; using System.Collections; [RequireComponent(typeof(Animator))] public class IKControl : MonoBehaviour { public Transform[] lookObj = null; public float weightDamping = 1.5f; public float maxDistance = 10f; public bool RightHandToTarget = true; private Animator animator; private Transform lastPrimaryTarget; private Quaternion savedRotation; private float lerpEndDistance = 0.1f; private float finalLookWeight = 0; private bool transitionToNextTarget = false; void Start() { animator = GetComponent<Animator>(); } // Callback for calculating IK void OnAnimatorIK() { if (lookObj != null) { Transform primaryTarget = null; float closestLookWeight = 0; // Here we find the target which is closest (by angle) to the players view line foreach (Transform target in lookObj) { Vector3 lookAt = target.position - transform.position; lookAt.y = 0f; // Filter out all objects that are too far away if (lookAt.magnitude > maxDistance) continue; // Find best matching object to the players view line float dotProduct = Vector3.Dot(new Vector3(transform.forward.x, 0f, transform.forward.z).normalized, lookAt.normalized); float lookWeight = Mathf.Clamp(dotProduct, 0f, 1f); if (lookWeight > closestLookWeight) { closestLookWeight = lookWeight; primaryTarget = target; } } if (primaryTarget != null) { if ((lastPrimaryTarget != null) && (lastPrimaryTarget != primaryTarget) && (finalLookWeight > 0f)) { // Here we start a new transition because the player looks already to a target but // we have found another target the player should look at transitionToNextTarget = true; } } // The player is in a neutral look position but has found a new target if ((primaryTarget != null) && !transitionToNextTarget) { lastPrimaryTarget = primaryTarget; finalLookWeight = Mathf.Lerp(finalLookWeight, closestLookWeight, Time.deltaTime * weightDamping); float bodyWeight = finalLookWeight * .75f; animator.SetLookAtWeight(finalLookWeight, bodyWeight, 1f); animator.SetLookAtPosition(primaryTarget.position); if (RightHandToTarget) { Vector3 relativePos = primaryTarget.position - transform.position; Quaternion rotationtoTarget = Quaternion.LookRotation(relativePos, Vector3.up); animator.SetIKRotationWeight(AvatarIKGoal.RightHand, finalLookWeight); animator.SetIKRotation(AvatarIKGoal.RightHand, rotationtoTarget); animator.SetIKPositionWeight(AvatarIKGoal.RightHand, finalLookWeight* 0.5f * closestLookWeight); animator.SetIKPosition(AvatarIKGoal.RightHand, primaryTarget.position); } } // Let the player smoothly look away from the last target to the neutral look position if ((primaryTarget == null && lastPrimaryTarget != null) || transitionToNextTarget) { finalLookWeight = Mathf.Lerp(finalLookWeight, 0f, Time.deltaTime * weightDamping); float bodyWeight = finalLookWeight * .75f; animator.SetLookAtWeight(finalLookWeight, bodyWeight, 1f); animator.SetLookAtPosition(lastPrimaryTarget.position); if (RightHandToTarget) { Vector3 relativePos = lastPrimaryTarget.position - transform.position; Quaternion rotationtoTarget = Quaternion.LookRotation(relativePos, Vector3.up); animator.SetIKRotationWeight(AvatarIKGoal.RightHand, finalLookWeight); animator.SetIKRotation(AvatarIKGoal.RightHand, rotationtoTarget); animator.SetIKPositionWeight(AvatarIKGoal.RightHand, finalLookWeight*0.5f * closestLookWeight); animator.SetIKPosition(AvatarIKGoal.RightHand, lastPrimaryTarget.position); } if (finalLookWeight < lerpEndDistance) { transitionToNextTarget = false; finalLookWeight = 0f; lastPrimaryTarget = null; } } } } }
  6. Ich hatte die Punkte und Linien so "gemalt" und den Quellcode unterschlagen, da es quick und dirty war, aber wenn es dir hilft. Diese Klasse an den 2D-Collider hängen der die Collision bekommt (die Gizmos siehst du nur im Sceneview). Wenn gerade keine Collision stattfindet zeichnet er trotzdem die letzte Collision. using System.Collections; using System.Collections.Generic; using UnityEngine; public class DrawCollider2D : MonoBehaviour { private List<Vector3> contactPoints; private List<Vector3> normalPoints; void OnCollisionEnter2D(Collision2D collision) { contactPoints = new List<Vector3>(); normalPoints = new List<Vector3>(); ContactPoint2D[] contactPoint2d = collision.contacts; foreach (ContactPoint2D cPoint in contactPoint2d) { contactPoints.Add(cPoint.point); normalPoints.Add(cPoint.normal); } } void OnDrawGizmosSelected() { if (contactPoints != null) { Gizmos.color = Color.blue; foreach (Vector3 cPoint in contactPoints) { Gizmos.DrawWireSphere(cPoint, 0.02f); } } if (normalPoints != null) { Gizmos.color = Color.red; int i = 0; foreach (Vector3 nPoint in normalPoints) { Gizmos.DrawLine(contactPoints[i], contactPoints[i] + nPoint); i++; } } } }
  7. Wenn du die Kontaktpunkte und die Normalen-Vektoren bei einer Kollision ausliest, dann sieht das in etwa so aus. An der Richtung der (beiden) Normalenvektoren kannst du also erkennen, auf welcher Seite des Box-Colliders die Kollision stattgefunden hat (wie Sascha schon geschrieben hatte). (rot = Normalenvektoren / blau = Kollisionspunkte / grün Boxcollider)
  8. Schau mal ob das Windows-Form oder Formular folgende Eigenschaft hat. Diese Eigenschaft sollte das Formular permanent im Vordergrund halten. this.TopMost = true;
  9. Sehe ich auch so, einige Kurse oder Zertifikate sind das Papier nicht wert auf dem sie stehen. Ich denke ein gutes Portfolio und Referenzen über die Mitarbeit bei anderen Projekten ist hier mehr Wert als solche Zertifikate. Man muss sich immer die Frage stellen, welche Programmierer würde ich selbst für mein Projekt einstellen.
  10. Hab mir nicht alles im Detail angeschaut, aber was er hier macht ist, er erzeugt eine Instanz aus dem Ability-Asset (ScriptableObject) mit dem Namen "_abilityName" und läd das Asset dabei über Resources.Load. Danach packt er diese Ability zu den verfügbaren Abilities des Spielers.
  11. Noch eine kleine Ergänzung. Game Design (in Richtung Level Design) hat für mich auch sehr viel mit Architektur im Allgemeinen zu tun, in gewissem Sinne vermischen sich dabei Skills wie künstlerisches Empfinden die eher in Richtung Art-Design gehen (wie Techniken aus der Malerei, Kunstgeschichte, Farblehre und ähnliches) oder aber auch technische Expertise die eher in Richtung Architektur geht (Techniken der historischen und modernen Architektur). Beides hat damit erst einmal nichts mit Programmieren oder 3D-Design (verwendete Tool oder Expertise mit diesen Tools) zu tun. Versteht man unter den Aufgaben des Game-Designers dann ebenfalls Aufgaben wie Story-Design, Charakter-Design, Game-Logiken und ähnliche Dinge dann kann man den Begriff des Game-Designers um diese Aufgabenbereiche erweitern, was dann ggf. weitere Skills des Game-Designers in diesen Themenbereichen erfordern kann. Gleiches gilt dann eben auch für einen Game-Designer der ebenfalls 3D-Art produzieren kann, was den Vorteil hat, das diese Assets sich dann perfekt in die geplante Game-Architektur (Level-Design) einbinden lassen, da sie diesem Konzept bereits entsprechen.
  12. Ich beziehe mich mal nicht direkt auf URP aber auf deine Frage und gehe davon aus, das sie eigentlich nicht URP-spezifisch ist. Also die Checkbox in den Unity Lightning-Settings für Ambient Occlusion ist für den Lightmapper und hat daher nur einen Effekt wenn du eine Lightmap für die Scene erstellst. Im Postprocessing (auch URP) gibt es einen eigenen Ambient Occlusion-Effekt der aber nichts mit dem Haken in den Unity Lightnings-Settings zu tun hat. Hierbei wird das Kamerabild der Scene nachträglich über diesen Effekt modifiziert. Du kannst also sowohl die AO in deiner erstellten Lightmap aktivieren und extra über einen Kamera-Postprocessing-Effekt abermals AO hinzufügen. Deine letzte Frage mit dem "klares Licht" habe ich nicht verstanden.
  13. Funktionieren die Lampen auch ohne Post-Processing-Effekte (vor allem Bloom?) und HDR oder anderes formuliert funktionieren sie auch im Gamma Color Space ohne HDR (Hintergrund der Frage ist, dass man dann so Sachen in die Assets einfügt wie Point Lights, Spot Lights und Area Lights in verschiedenen Varianten dann auch für den Linear Color Space da man hier dann ja quasi 2 Lichtquellen haben kann mit Emissive Materials). Wenn sie es nicht schon haben, ist es immer gut, wenn jede Lampe ein kleines Script besitzt mit dessen Hilfe man die Eigenschaften der Lampe verstellen kann, wie Farbe, Leuchtkraft usw. Ansonsten schöne Arbeit
  14. Versuch mal den "Library"-Folder des Projektes zu löschen (vorher Unity beenden) und dann das Projekt neu in Unity zu öffnen (vorher aber am besten ein Backup machen wie immer). Wenn das alles nicht geholfen hat, dann könnte man auch die Projektsettings komplett zurücksetzen (d.h. das Verzeichnis "ProjectSettings" ebenfalls löschen), aber das würde ich erstmal nicht machen (weil hier kann man auch "Projektdaten" verlieren wie gesetzte Tags / Layers usw.).
×
×
  • Create New...