Jump to content
Unity Insider Forum

Seyshiro

Members
  • Content Count

    52
  • Joined

  • Last visited

Community Reputation

1 Neutral

About Seyshiro

  • Rank
    Advanced Member

Recent Profile Visitors

1,462 profile views
  1. OK, hab die Lösung selber gefunden. Dazu habe ich in der Physics Body Component des Players (der Kapsel) den Motion Type auf dynamic gesetzt und in meinem Script in der OnStartRunning Methode ganz einfach die Trägheit auf 0 gesetzt. Das sieht ganz einfach so aus: protected override void OnStartRunning() { base.OnStartRunning(); Entities .WithAll<PlayerTag>() .ForEach((ref PhysicsMass mass) => { mass.InverseInertia = float3.zero; }).Schedule(); }
  2. 1. you should put the code into a Code-Block 2. you can find the english unity forum here 3. I'm assuming that the variable "CanBeSpawn" is never set to "false" and therefore the while loop never stops, so you have an endless loop and Unity freezes. 4. Sorry, my english is pretty bad
  3. Evtl. könntest du ein UI Panel erstellen, welches den gesamten Bildbereich abdeckt und dann mit der "Mask" Component arbeiten, wie in diesem Video erklärt.
  4. Gib dem Button die Component "Layout Element" und spiele ein bisschen mit der Flexible Width herum damit solltest du eigentlich den gewünschten Effekt erzielen.
  5. Aus Neugier befasse ich mich z.Z. ein bisschen mit dem Thema ECS. Als kleine Übung habe ich mir jetzt mal eine einfache Scene erstellt (wie auf dem Bild zu sehen). Alle 3 Objekte (Boden, Wand, Kapsel) besitzen eine "Physics Shape" Component, die Kapsel und die Wand besitzen zusätzlich noch eine "Physics Body" Component und die Kapsel besitzt außerdem noch ein "PlayerTag" und eine "Move Speed Data" Component, welche folgendermaßen aussieht. using Unity.Entities; [GenerateAuthoringComponent] public struct MoveSpeedData : IComponentData { public float moveSpeed; } Zusätzlich habe ich jetzt noch eine Klasse erstellt, welche dafür sorgt, dass sich die Kapsel auf Tastendruck bewegt, diese Klasse sieht so aus: using Unity.Entities; using Unity.Mathematics; using Unity.Physics; public class MovePhysics : SystemBase { private PlayerInput input = new PlayerInput(); private float2 direction; protected override void OnUpdate() { float2 moveDirection = direction; Entities .WithAll<PlayerTag>() .ForEach((ref PhysicsVelocity velocity, in MoveSpeedData moveSpeed) => { velocity.Linear = new float3(moveDirection.x * moveSpeed.moveSpeed, 0, moveDirection.y * moveSpeed.moveSpeed); }).Schedule(); } protected override void OnCreate() { base.OnCreate(); input.Controls.VerticalMove.performed += ctx => direction.y = ctx.ReadValue<float>(); input.Controls.HorizontalMove.performed += ctx => direction.x = ctx.ReadValue<float>(); input.Enable(); } protected override void OnDestroy() { base.OnDestroy(); input.Disable(); } } So nach dieser langatmigen Beschreibung nun zum eigentlichen Punkt. Ich möchte, dass die Kapsel bei Kollision mit der Wand stehen bleibt, wie es bei Playern üblich ist. Jetzt habe ich ein bisschen mit dem Motion Type im Physics Body herumgespielt, erhalte aber nie das gewünschte Ergebnis. Wenn ich den MotionType der Kapsel auf "Dynamic" setze, dann fällt sie bei der Bewegung um, wenn ich ihn auf "Kinematic" setze, kann sie nicht mehr mit der Wand kollidieren und wenn ich ihn auf "Static" setze, Bewegt sie sich nicht mehr. Ich hab auch schon überlegt, die Rotation einfach einzufrieren, damit die Kapsel beim Dynamic Motion Type nicht mehr umkippen kann, weiß aber leider nicht, wie das beim Physics Body geht. Hat zufällig jemand eine Ahnung, was die übliche Vorgehensweise ist, um dieses standardmäßige Player-rennt-Gegen-eine-Wand-und-kommt-nicht-mehr-weiter-Verhalten zu erzielen?
  6. Ist "Can't add script" das einzige was die Fehlermeldung sagt? Ohne weitere Informationen kommen mir spontan 2 Gründe in den Kopf. Dein Code enthält irgendwo einen Syntax Error Der Name deiner C# Datei stimmt nicht mit dem Namen der Klasse überein
  7. Vielen dank für dein Feedback. Hab deine Anmerkungen gleich mal umgesetzt aber als Character war mir die kleine Unity-Chan lieber. 😊 Hier auch gleich mal das neue Video dazu. Die Bewegungen und Animationen sind leider noch nicht so ganz synchron, da ich testweise alles nur schnell Quick and Dirty zusammengebastelt habe. Weitere Kritik, Feedbacks und Ideen sind natürlich immer gerne gesehen. 😀
  8. Hi@all, hab mich die letzten paar Tage mal an ein kleines Projekt herangewagt, bei dem ein Objekt (z.B. ein Character) sich an der Oberfläche eines anderen Objekts entlang bewegen kann, unabhängig dessen Form. Hier mal ein kleines Demovideo dazu. An den Scripts muss zwar noch einiges getan werden, was usability, readability und performance angeht aber das Grundprinzip funktioniert schon ganz gut. Ich würde mich freuen, wenn ihr einen Kommentar da lasst und eure Meinung dazu schreibt. Kritik ist gerne gesehen. Dankeschön.
  9. Nun du könntest die Objekte relativ zur Entfernung der Kamera skalieren, aber wie Sascha schon sagte, gehen dann die Proportionen flöten. Als Alternative würde ich eine Markierung vorschlagen (z.B.: ein Sprite, das einen Pfeil enthält), der ab einer gewissen Entfernung des Objekts zur Kamera aufploppt und auf die Position des Objekts deutet.
  10. Hi@all, ich habe mir grade eine kleine "Zeichen"-Funktion erstellt. Im Prinzip erstelle ich einfach nur einen LineRenderer und erstelle neue Punkte an der aktuellen Mausposition, wenn sie sich vom letzten gezeichneten Punkt eine gewisse Distanz entfernt hat. Dem LineRenderer habe ich eine "Corner Verticies"-Anzahl von 8 gegeben, um die Ecken etwas abzurunden. Das Problem ist nur, dass die gezeichneten Linien an den Ecken diese merkwürdigen hervorstehenden Kanten haben. Hat irgendjemand eine Idee woran das liegen könnte und wie ich das Problem beheben kann?
  11. Hi@all, hatte neulich eine kleine Idee für ein Online-RPG für Mibile-Geräte. Das Grundkonzept steht alles auch schon soweit. Dadurch dass dieses Spiel Online seien soll und Spieler in gewissem Maße auch miteinander interagieren können sollen habe ich mir nun auch einige Gedanken darüber gemacht, wie ich dieses Spiel möglichst gegen Cheater / Hacker absichern kann und bin zu folgender Lösung gekommen: Da das Spiel Online ist müssen selbstverständlich die Spieler Identifiziert werden. Daher müssen sie sich bei der Erstnutzung logischerweise registrieren und danach einloggen. Der Server sendet dann dem Game eine Session-ID mit der die Identifikation stattfindet. Nun ist es wichtig, dass alle Berechnungen, welche die Serverdaten beeinflussen (direkt oder indirekt) nicht im Game sondern auf dem Server selbst ablaufen. D.h. wenn ich z.B. in dem Spiel einen "Add Exp"-Button hätte, der dem Spieler jedes mal beim draufklicken 50 Erfahrungspunkte gibt, dann sende ich dem Server nicht die Anzahl der Erfahrungspunkte, sondern nur die Info, dass der Spieler den Button geklickt hat. Alles weitere (das hinzufügen der Exp und evtl. der Level-Up) passiert dann auf dem Server und der sendet dann die neuen Daten (Exp, Level, etc.) wieder zurück an das Game. Für den Datenaustausch wollte ich auf dem Server eine REST-API mit PHP ( +Framework) und MySQL erstellen. Die Daten würden selbstverständlich verschlüsselt übertragen werden. So... nach dieser etwas langatmigen Erklärung ist meine Frage eigentlich nur, ob das so gemacht werden kann oder ob Unity (oder vielleicht auch ein 3.-Anbieter) für so einen Fall schon selbst eine gute Lösung parat hält?
  12. OK, sowas habe ich schon befürchtet. Dann muss ich mir mal Gedanken machen, wie ich da am besten den Überblick behalte. Danke für eure antworten.
  13. Hi@all, ich bin z.Z. dabei mir für ein kleines Projekt in Unity einen Game Charcter mit mehreren Animationen in Blender zu erstellen. Nun bin ich allerdings auf ein kleines Problem gestoßen, das mich ein wenig Wurmt. Wenn ich z.B. eine Animation habe, bei der nur die Joints für die Wirbelsäule manipuliert werden müssen und bei einer weiteren Animation, nur die Joints für die Arme und Beine, dann besteht das Problem, dass nach dem Abspielen, der Arm-und-Bein-Animation die Wirbelsäulen-Animation nicht mehr in ihrer üblichen Ausgangspose ist, da die Joints für Arme und Beine ja von der anderen Animation manipuliert wurden. Jetzt wäre der simpelste Gedanke einfach der, dass ich am Anfang der Wirbelsäulen-Animation auch Keyframes für die Joints der Arme und Beine und bei der Arm-und-Bein-Animation am Anfang Keyframes für die Joints der Wirbelsäule setze damit die jeweiligen Ausgangspositionen der Joints in den einzelnen Animationen auch beibehalten werden aber ist das auch die richtige Vorgehensweise? Oder gibt es da möglicherweise eine einfachere Methode? Denn das stelle ich mir ziemlich umständlich vor, wenn man mehrere Animationen für ein Objekt hat, man dann später eine weitere Animation hinzufügen will, z.B. einen Follow-Path-Modifier für bestimmte Joints, und dann in allen anderen Animationen diese Modifier deaktivieren muss. Phu... ich hoffe ihr versteht was ich meine.
  14. Versuchs mal hiermit. using UnityEngine; public class TriggerChecker : MonoBehaviour { private bool isInTrigger = false; private void OnTriggerEnter(Collider other) { isInTrigger = true; } private void OnTriggerExit(Collider other) { isInTrigger = false; } private void Update() { if (!isInTrigger) { // do something } } } Ich hab den Code zwar nicht getestet aber er sollte eigentlich funktionieren. Im if-Block innerhalb der Update Methode kannst du jetzt deinen Code ausführen.
  15. @malzbie Danke für die schöne Erklärung. Ist das Erstellen so eines Fake-Lichtbrechungs-Shaders für glatte Oberflächen auch mit dem Shader Graph möglich? Und wenn ja, wie kann ich das am besten umsetzen? Mir fehlt da irgendwie der Ansatz.
×
×
  • Create New...