Jump to content
Unity Insider Forum

3ncrypt0

Members
  • Content count

    151
  • Joined

  • Last visited

  • Days Won

    2

3ncrypt0 last won the day on September 16 2016

3ncrypt0 had the most liked content!

Community Reputation

7 Neutral

About 3ncrypt0

  • Rank
    Advanced Member

Recent Profile Visitors

1,776 profile views
  1. 3ncrypt0

    Robot Kyle Footprints

    Servus, ich möchte, dass mein Player Fußspuren hinterlässt, allerdings habe ich dabei Probleme bzgl. Triggern und Animation. Vorab mein Script: using System.Collections; using System.Collections.Generic; using UnityEngine; public class Footstep : MonoBehaviour { public GameObject footstep; public Transform leftFootstepLocation; public bool active = true; private void Start() { this.leftFootstepLocation = this.transform; } void LeftFootstep() { RaycastHit hit; Debug.Log(this.leftFootstepLocation.position); Instantiate(this.footstep, new Vector3(this.leftFootstepLocation.position.x, 0.02f, this.leftFootstepLocation.position.z), Quaternion.Euler(90, this.leftFootstepLocation.eulerAngles.y, 0)); } private void OnTriggerExit(Collider other) { if(other.gameObject.tag == "Ground") { if (this.active) { LeftFootstep(); this.active = false; } } } private void OnTriggerEnter(Collider other) { if(other.gameObject.tag == "Ground") { this.active = true; } } } Und ein Screenshot: Wie man dem Script und dem Screenshot entnehmen kann, war mein Plan ein empty GameObject mit einem BoxCollider zu verwenden, bei dem IsTrigger aktiviert ist. Verlässt der Fuss den Boden, soll an der Position ein Fußabdruck erstellt werden. Ich verwende eine Animation von Mixamo. Das Problem ist nun, dass manchmal das Triggern des Fußes doppelt ausgelöst wird und manchmal überhaupt nicht. Wenn ich renne, passiert z.B. nichts. In diesem Tutorial z.B. verwendet er zum Auslösen der Funktionen die Animationen. Also wenn der Fuß laut Animation den Boden verlässt, setzt er ein Sprite. Gibt es dort keine einfachere Lösung? Ich wüsste gerade nicht, wie ich das über meine Animation steuern sollte. VG Jochen
  2. Hi, konnte das Problem lösen. Mein Player ist nun ein Rigidbody. Ich musste in dem Fall Drag und AngularDrag auf 1 setzen und weiterhin die Rotation am Rigidbody auf X und Z sperren. Hier ein Auszug aus meiner PlayerController: if (reachedEndOfPath) return; lookAttarget = new Vector3(path.vectorPath[currentWaypoint].x - transform.position.x, transform.position.y, path.vectorPath[currentWaypoint].z - transform.position.z); playerRot = Quaternion.LookRotation(lookAttarget); transform.rotation = Quaternion.Slerp(transform.rotation, playerRot, rootSpeed * Time.deltaTime); transform.position = Vector3.MoveTowards(transform.position, new Vector3(path.vectorPath[currentWaypoint].x, 1, path.vectorPath[currentWaypoint].z), speed * Time.deltaTime);
  3. Ich habe die Z und X Achse ja gesperrt, dass interessiert den aber nicht. Was aber normal sein sollte, wenn ich den Player über die CharacterController Component steuer, da ich ja das transform bewege, oder nicht?
  4. Huhu zusammen, nach einer etwas längeren Pause sitze ich wieder an einem neuen Projekt und stoße direkt am Anfang auf ein kleines Problem. Der Spieler wird mittels Mausklick zur Mausposition beweget. Dazu habe ich mir das A* Pathfinder Projekt zur Hilfe genommen, da der Spieler durch verschiedene Räume navigiert werden muss. Die Sicht ist hier die Vogelperspektive. Auf der Map befinden sich z.B. "Kartons" als Physicobjects. Läuft der Spieler z.B. dagegen oder dadurch, sollen diese sich natürlich bewegen oder ein Stapel umfallen. Im ersten Versuch hatte ich den Spieler als normalen CharacterController Player aufgebaut, allerdings gab es keine Reaktion an den Kartons, wenn ich durch diese durchlaufen wollte. Der Player hängte sich fest, die Kartons rührten sich kein Stückchen. Dann habe ich dem Player die Rigidbody Component hinzugefügt, die Rotation fixiert. Die Kartons bewegten sich zwar ein Stückchen, aber das war alles eher Buggy. Der Player hing auch da häufig fest. Ich denke mal, dass es daran liegt, da ich den Player weiterhin mit dem CharacterController gesteuert habe. Wenn ich den Player nun aber nicht mehr mit dem CharakterController steuere, sondern über die Physics, dann habe ich zwar den gewünschten Effekt bei den anderen physikalischen Objekten, so dass diese umfallen oder weggeschossen werden usw., allerdings legt sich mein Player immer hin, wenn ich eine TargetPosition erreicht habe, da der Player sich ja auch immer in Richtung des nächsten Waypoints drehen soll. Auch steht der Player immer schief. Gibt es eine Möglichkeit den Player mit dem CharacterController zu steuern, so dass auch andere Objekte, welche die RigidbodyComponent besitzen, darauf reagieren? Da ich gerade nur am MacBook sitze und noch nicht im Büro, kann ich gerade keine CodeSnippets posten, hole ich aber gleich nach. VG Jochen
  5. Hi zusammen, ich habe heute ein WebGL Build von meiner App gemacht da ich diese auch auf FB veröffentlichen wollte. Jedoch habe ich das Problem, dass die Menü Scene mir einen Fehler schmeißt, mit dem ich absolut nichts anfangen kann: Invoking error handler due to Uncaught abort(135) at Error at jsStackTrace (WebGL.asm.framework.unityweb:1154:12) at stackTrace (WebGL.asm.framework.unityweb:1168:11) at abort (WebGL.asm.framework.unityweb:19122:43) at nullFunc_iiii (WebGL.asm.framework.unityweb:15079:2) at b135 (WebGL.asm.code.unityweb:2885259:2) at __ZN13MemoryManager8AllocateEjjRK10MemLabelId15AllocateOptionsPKci (WebGL.asm.code.unityweb:1519618:76) at __ZnwjRK10MemLabelIdjPKci (WebGL.asm.code.unityweb:2772311:9) at __ZN17MessageIdentifierC2EPKcNS_7OptionsEPKN5Unity4TypeES1_ (WebGL.asm.code.unityweb:2136674:8) at __GLOBAL__sub_I_runtime_animation_lump_cpp (WebGL.asm.code.unityweb:1561230:2) at __GLOBAL__sub_I_runtime_animation_lump_cpp [UnityLoader.2040a30ff2a57bb99860471556a0799e.asm.__GLOBAL__sub_I_runtime_animation_lump_cpp] (WebGL.asm.framework.unityweb:18116:57) at func (WebGL.asm.framework.unityweb:1546:3) at callRuntimeCallbacks (WebGL.asm.framework.unityweb:1272:4) at ensureInitRuntime (WebGL.asm.framework.unityweb:1296:2) at doRun (WebGL.asm.framework.unityweb:19065:3) at run (WebGL.asm.framework.unityweb:19083:3) at runCaller (WebGL.asm.framework.unityweb:19011:28) at removeRunDependency [Object.removeRunDependency] (WebGL.asm.framework.unityweb:1490:4) at blob:http://webgl.dev/71b9a29e-ffd1-4e80-9819-2239429594db:11:11 at doCallback (WebGL.asm.framework.unityweb:6175:11) at done (WebGL.asm.framework.unityweb:6186:5) at done (WebGL.asm.framework.unityweb:5308:12) at storeLocalEntry [Object.storeLocalEntry] (WebGL.asm.framework.unityweb:5226:3) at blob:http://webgl.dev/71b9a29e-ffd1-4e80-9819-2239429594db:5319:12 at onsuccess [IDBRequest.UnityLoader.2040a30ff2a57bb99860471556a0799e.IDBFS.loadRemoteEntry.req.onsuccess] (WebGL.asm.framework.unityweb:5245:4) Ich habe in der Scene schon alles deaktiviert, aber ich bekomme weiterhin diese Meldung. Deaktiviere ich das Menü in den BuildSettings und lade nur die Game Scene mit, klappt es. In dem Menü sind nur 3 Buttons, eine Rankliste die ich aus den PlayPrefs auslese und die Schwierigkeitsstufen und eine LadeOberfläche, wenn ich die Game Scene lade. Jemand eine Idee, woran es liegen könnte? Danke und VG Jochen
  6. Hi @hankey94, ChildAlignment der VerticalLayoutGroup sitzt auf TopCenter. Das Problem hier ist ja, dass sich das Parent RectTransform in der Breite anpassen muss. Ich habe nun mal etwas getestet: LayoutGroup weg (sind nur 3 Buttons im Menu). Wir die App gestartet bzw. die MenuScene geladen, so lese ich die gewählte CurrentLanguage aus den PlayerPrefs uns passe dementsprechend den Text in den Textfeldern an. Dann habe ich mir eine MenuWidthFix Class geschrieben. Diese habe ich auf das Parent der Menupunkte gelegt - dort frage ich alle ChildTextComponents ab, lese die Breite aus (die Texte haben ein ContentSizeFitter, damit sich die Breite dem Inhalt anpasst) und die größte Breite setze ich dann auch als Breite auf das Parent. Der Pivot des Parents ist mittig gesetzt, die Menupunkte immer links. Fazit: Das Parent ist immer mittig positioniert in der Breite des breitesten Menupunktes. Die Menupunkte sitzen immer links - also dann auch mittig. Nur gibt es noch ein Problem. Der FixClass: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class MenuWidthFix : MonoBehaviour { public GameObject panel; [SerializeField] private float w = 0; void Start(){ Invoke ("changeMenuWidth", .05f); } public void changeMenuWidth(){ w = 0; Text[] textComponents = panel.GetComponentsInChildren<Text> (); foreach (Text t in textComponents) { if (t.GetComponent<RectTransform> ().sizeDelta.x > w) { w = t.GetComponent<RectTransform> ().sizeDelta.x; } } setWidth (); } void setWidth(){ panel.GetComponent<RectTransform> ().sizeDelta = new Vector2 (w,295); } } Ich muss den changeMenuWidth zeitverzögert aufrufen, da ich sonst immer eine Breite von 0 auf den Text Objekte auslese. Ändere ich die Sprache in der SettingsClass: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Settings : MonoBehaviour { public MenuWidthFix menuFix; public void ChangeLanguage(string key){ PlayerPrefs.SetString ("CurrentLanguage", key); Text[] allTextAssets = FindObjectsOfType (typeof(Text)) as Text[]; Debug.Log ("1"); foreach (Text text in allTextAssets) { if (text.GetComponent<MultiText> () != null) { text.GetComponent<MultiText> ().reloadLanguage (); Debug.Log ("2"); } } Debug.Log ("3"); menuFix.changeMenuWidth (); StartCoroutine (changeWidth()); } IEnumerator changeWidth(){ yield return new WaitForSeconds(.1f); //menuFix.changeMenuWidth (); } } Muss ich den Aufruf der FixClass auch zeitverzögert durchführen - das ist strange. Ich habe mal ein paar Debug.Logs eingesetzt um zu schauen, wann was wann aufgerufen wird und eigentlich sollte es passen. Erst wenn alle Textfelder geändert sind, wird FixClass aufgerufen, trotzdem ließt diese noch die alten Breiten aus... Die Funktion zeitverzögert aufzurufen, sieht total bekloppt aus... jemand eine Idee? Danke und VG EDIT: Hier mal temporär ein Video, was ich meine:
  7. Hi zusammen, ich habe heute in meiner App weitere Sprachen hinzugefügt. Mein Mainmenü in der ersten Scene ist horizontal mittig positioniert. Ändere ich die Sprache, so ändert sich auch die Länge der Navigationspunkte. Gibt es eine Möglichkeit, dass sich die Punkte immer mittig zentrieren? Die Menüpunkte befinden sich in einer Vertical Layout Group. Die Punkte sind Buttons und dort drin ist das jeweilige TextObjekt. Oder muss ich die Ausrichtung via Script manuell mit vordefinierten Werten vornehmen, wenn sich die Sprache ändert? Danke und VG Jochen
  8. Danke skee, ich gebe Dir Recht, wenn viele Karten vorhanden sind, wirkt es schon etwas klein/viel auf einem Handy. Mir war es wichtig, dass es auf das Nötigste reduziert wird da sich die App ja auch an Kinder richtet. Ich werde noch Mehrsprachigkeit einrichten, damit die App auch auf deutsch vorhanden ist und hier und da ein paar kleine Verbesserungen um die Usability zu verbessern. Bzgl. des Fehler auf dem Galaxy S5 mini: Graphics API habe ich in den PlayerSettings auf manuell gestellt in der Reihenfolge: Vulkan, OpenGLES3, OpenGLES2 Ich habe in der Scene aber auch RealtimeGI aktiviert. Vllt. hängt es auch damit zusammen. VG
  9. Hi zusammen, ich habe gestern meine neue App veröffentlicht. Sven's Memory ist ein Kartenspiel für Kinder. Ich habe die App eigentlich für meine Kinder entwickelt...mir dann aber gedacht, hau sie in den Store. Es gibt nicht viel in der App, nur 4 Schwierigkeitsstufen, Highscore, ein paar Sound und Lichteffekte, aber meine Kinder und Neffen/Nichten haben wirklich Spass daran. https://www.androidpit.de/forum/759825/sven-s-memory-memory-fuer-kinder-3d#3103325 Ich würde mich über Feedback freuen - Vor allem interessiert mich die Performance und ob ihr Probleme habt mit der Grafik (meine Schwester auf einem Galaxy S5 mini, da ist alles total hinüber...sieht aus, als ob es viiiel zu hell ist und alles verkratzt und überall Artefakte). Die App ist kostenlos und enthält derzeit noch keine InApp Käufe - soll aber kommen um Werbung zu deaktivieren. Weitere Modis kommen auch die Woche, wie Mehrspieler usw. Allerdings stört mich die Werbung momentan noch - nicht dass ich welche schalte, sondern was für eine ausgespielt wird. Ich habe angegeben bei Unity, dass sich die App an Kinder unter 13 richtet und als Werbung erhalte ich leider Ritter gemetzel... Naja, ich würde mich über Feedback wirklich freuen. Danke und Viele Grüße, Jochen
  10. Ja, Danke! Ich habe mit dem Animator kaum Erfahrung und tue mich damit noch etwas schwer...aber das war die Lösung!
  11. Ah okay! Super Danke! Gut zu wissen - Verwende nun zwar Animationen, aber ich werde es bestimmt noch einmal benötigen...
  12. Hi zusammen, in einem kleinem Kartenspiel, muss der User Karten, welche vorher verdeckt sind, umdrehen. Dazu habe ich folgende Variante versucht: void OnMouseUp(){ StartCoroutine(RotateMe(Vector3.right * 180, .6f)); } IEnumerator RotateMe(Vector3 byAngles, float inTime) { var fromAngle = transform.rotation; var toAngle = Quaternion.Euler(transform.eulerAngles + byAngles); for (var t = 0f; t < 1; t += Time.deltaTime / inTime) { transform.rotation = Quaternion.Lerp(fromAngle, toAngle, t); yield return null; } StartCoroutine(WaitToSee()); } Das funktioniert auch halbwegs gut, nur leider endet die Rotation nie bei 180° oder 0° sondern weicht immer ein wenig ab, was dazu führt, dass Karten schräg dargestellt werden. Eine weitere Variante welche ich getestet habe und welche ich persönlich auch besser finde, da die Rotationsanimation besser gestaltet werden kann, sind ganz normale Animationen. Die Karten werden bei Spielbeginn instanziiert. Ich habe auf einer Karte eine Animation erstellt und wollte diese auf alle weiteren Karten in den Prefabs übertragen, allerdings habe ich auch eine Positionstransformation auf Y erstellt. X&Z sind dementsprechen auch in der Animation erhalten. Fazit: Alle Karten werden sobald die Animation startet, auf die gleiche Position verschoben Kann ich die X&Z Achsen von der Animation ausnehmen? Danke und VG EDIT: Habe gerade eben festgestellt, dass mein ChildObject mit der Animation nicht auf zero im parent lag - dann kann das mit der Animation natürlich nichts werden. (Jedes mal wenn ich einen Thread erstelle, finde ich meist ein paar Minuten später selber die Lösung...egal wie oft ich vorher nachgeguckt habe...sorry) - Was mich aber noch stört ist, dass die Animation mit rund 1sek Verzögerung startet ich aber keine Angegeben habe.
  13. Boooooahr Ja, genau das war es - Es gibt Tage, da sollte man besser im Bett liegen bleiben... Die Scripte als Requirement anzugeben hatte mich aber auch nicht weiter gebracht, da ich den gleichen Fehler bekommen hatte. Super wäre es, wenn man einen Fehler hat, diesen in der Console anklickt und er dann auf das Object springt.
  14. Hi, beide Klassen hängen ja am selben Gameobject. Genau das ist es ja, was mich wundert. Auch dass die Log Ausgabe aus Test() in der Console ausgegeben wird. Ich habe die Klassen nun mal als Requirement gesetzt, was mich aber nicht weiter bringt. Hier mal ein Screenshot:
  15. Hi zusammen, ich arbeite gerade an meiner AI und und habe nun folgendes Problem: Ich arbeite mit relativ vielen Klassen, die meisten sind jedoch einem Objekt zugeordnet. Ich habe eine Klasse AIBrain in der ich mehr oder weniger für die jeweilige AI alles lokal steuer. Dann habe ich z.B. noch eine Klasse AISight in der ich prüfe, ob der Player sich in der Nähe befindet und ob ich freie Sicht auf diesen habe. Teilausschnitt AIBrain.cs: public class AIBrain : MonoBehaviour { public GameObject parent; private GameObject Player; private GameObject centerOfMap; private AIManager AIManager; private AI AI; private AIWaypoint AIWaypoint; private AITransition AITransition; private AISight AISight; private AeroplaneAiControl AeroplaneAiControl; private AISensitivity AISensitivity; public GameObject DefendObject; public AIFunctions.AIStates currentState; private bool playerDetected = false; void Start() { AIManager = GameObject.FindGameObjectWithTag("EnemyManager").GetComponent<AIManager>(); AI = parent.GetComponent<AI>(); AIWaypoint = parent.GetComponent<AIWaypoint>(); AITransition = GetComponent<AITransition>(); AISight = GetComponent<AISight>(); AeroplaneAiControl = parent.GetComponent<AeroplaneAiControl>(); AISensitivity = GetComponent<AISensitivity>(); centerOfMap = GameObject.FindGameObjectWithTag("CenterOfMap"); currentState = AI.AIState; Player = GameObject.FindGameObjectWithTag("Player"); } void Update(){ { if (AISight.Test()) //FEHLER - NullReferenceException { AI.AIState = AIFunctions.AIStates.ATTACKING; } else if (!AISight.Test() && playerDetected) { AI.AIState = AIFunctions.AIStates.IDLE; } } Bei AISight.Test() wirft er mir die Exception. AISight selber ist aber da. Hier die AISight.cs: public class AISight : MonoBehaviour { [SerializeField] private float distance = 300f; // how far they can see the target [SerializeField] private float arc = 60f; // their field of view public bool Test() { Debug.Log("Detect"); return true; } Das Komische ist, dass er "Detect" in der Console ausgibt. Die Test() wird aber nur aus der AIBrain aufgerufen. Ich sehe den Fehler einfach nicht. Kann mir da mal jemand auf die Sprünge helfen? Danke und VG
×