Orangesky Geschrieben 19. Oktober 2013 Melden Share Geschrieben 19. Oktober 2013 Hey Leute ich verzweifel, mein Character läuft immer durch Wände? Obwohl die Wand ein Rigidbody und ein Collider hat. Wieso kann der duruch Wände gehen? Danke euch Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mr 3d Geschrieben 19. Oktober 2013 Melden Share Geschrieben 19. Oktober 2013 Bewegst du den CharacterController mit der integrierten Move-funktion? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tiles Geschrieben 19. Oktober 2013 Melden Share Geschrieben 19. Oktober 2013 Die Wand braucht keinen Rigidbody. Ein Meshcollider langt. Der sollte nur nicht auf is Trigger stehen. Ansonsten vermute ich mal das gleiche was schon Mr 3D vermutet. Du bewegst das Ding nicht zufällig mit Transform.Translate ? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Orangesky Geschrieben 19. Oktober 2013 Autor Melden Share Geschrieben 19. Oktober 2013 Ja doch benutze var speed = 1; var movey=1; function Update () { var dir : Vector3 = Vector3.zero; // we assume that device is held parallel to the ground // and Home button is in the right hand // remap device acceleration axis to game coordinates: // 1) XY plane of the device is mapped onto XZ plane // 2) rotated 90 degrees around Y axis dir.x = Input.acceleration.x; dir.z = movey; // clamp acceleration vector to unit sphere if (dir.sqrMagnitude > 1) dir.Normalize(); // Make it move 10 meters per second instead of 10 meters per frame... // dir *= Time.deltaTime; // Move object transform.Translate (dir * speed); } Wie muss ich das ändern? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Orangesky Geschrieben 20. Oktober 2013 Autor Melden Share Geschrieben 20. Oktober 2013 Kann mir keiner helfen? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
dschems Geschrieben 20. Oktober 2013 Melden Share Geschrieben 20. Oktober 2013 Als erstes brauchst du deinen cc: Var Controller = GetComponent("CharacterController"); Dann tausche das transform.translate mit: Controller.move Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Orangesky Geschrieben 20. Oktober 2013 Autor Melden Share Geschrieben 20. Oktober 2013 dank dir Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tiles Geschrieben 21. Oktober 2013 Melden Share Geschrieben 21. Oktober 2013 Dachte ich mirs doch. Transform.Translate ignoriert Kollisionen. Damit setzt du quasi die Position jedesmal neu, ohne den Körper wirklich mit Physik zu bewegen. Und dann greift eben auch die Physik nicht. Deswegen braucht es entweder Move oder SimpleMove wenn du einen Charactercontroller bewegen willst. Hier findest du ein Beispiel für die Move Methode: http://docs.unity3d.com/Documentation/ScriptReference/CharacterController.Move.html Hier die für Simple Move: http://docs.unity3d.com/Documentation/ScriptReference/CharacterController.SimpleMove.html Und Sascha hat irgendwo in der Tutorialsektion auch ein sehr schönes Tutorial zum Thema Charactercontroller liegen. Ich finde es nur gerade nicht Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Orangesky Geschrieben 21. Oktober 2013 Autor Melden Share Geschrieben 21. Oktober 2013 danke euch Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 21. Oktober 2013 Melden Share Geschrieben 21. Oktober 2013 Dachte ich mirs doch. Transform.Translate ignoriert Kollisionen. Nein, machts nicht! Nur der Character Controller mag das nicht. Mit nem Rigidbody löfts. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tiles Geschrieben 21. Oktober 2013 Melden Share Geschrieben 21. Oktober 2013 Ich vergess das immer ^^ Aber er hat ja nun den Charactercontroller verwendet Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
dschems Geschrieben 21. Oktober 2013 Melden Share Geschrieben 21. Oktober 2013 http://forum.unity-community.de/topic/1975-scripten-in-der-praxis-der-charactercontroller/ Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 21. Oktober 2013 Melden Share Geschrieben 21. Oktober 2013 Nein, machts nicht! Nur der Character Controller mag das nicht. Mit nem Rigidbody löfts. Nope, die Aussage ist völlig richtig. Translate ist komplett abseits der Physik-Engine. Dass das mit Rigibodys zu funktionieren scheint, liegt nur daran, dass der Rigidbody im nächsten Fixed Timestep plötzlich merkt, dass er in einem Objekt steckt und sich raus ploppt. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
malzbie Geschrieben 22. Oktober 2013 Melden Share Geschrieben 22. Oktober 2013 Hehe! Das passiert genauso wenn du über die Physik etwas bewegst. Muss nur schnell genug sein, das zwischen den Frames soviel Weg überbrückt wird, dass der Körper in den anderen eintritt. Aber ist doch egal. Tut ja hier nix zur Sache. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sid Burn Geschrieben 22. Oktober 2013 Melden Share Geschrieben 22. Oktober 2013 Kommt drauf an was man nutzt. Wenn man rigidbody.MovePosition() nutzt dann wird ein rigidbody zum Ziel bewegt und alles was dazwischen war wird ebenfalls von der Physik-Engine erkannt und bewegt. Und ansonsten ist es ebenfalls nur eine Einstellungssache des rigidbody. Setzt man die collisionDetectionMode auf "Continuous" oder "ContinuousDynamic" dann wird ebenfalls alles erkannt was dazwischen ist. Kostet natürlich Rechenleistung. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Orangesky Geschrieben 24. Oktober 2013 Autor Melden Share Geschrieben 24. Oktober 2013 Hey Leute es will einfach nicht funktionieren !! jetzt bekomme ich diesen error? UnityException: You are not allowed to call this function when declaring a variable. Move it to the line after without a variable declaration. If you are using C# don't use this function in the constructor or field initializers, Instead move initialization to the Awake or Start function. Accelometer Jet..ctor () (at Assets/Scripts/Accelometer Jet.js:3) mein Script: var speed = 0.9; var movey= 0.9; var controller : CharacterController = GetComponent(CharacterController); function Update () { var dir : Vector3 = Vector3.zero; // we assume that device is held parallel to the ground // and Home button is in the right hand // remap device acceleration axis to game coordinates: // 1) XY plane of the device is mapped onto XZ plane // 2) rotated 90 degrees around Y axis dir.x = Input.acceleration.x; dir.z = movey; // clamp acceleration vector to unit sphere if (dir.sqrMagnitude > 10) dir.Normalize(); // Make it move 10 meters per second instead of 10 meters per frame... // dir *= Time.deltaTime; // Move object controller.Move (dir * speed); } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Lustlosz Geschrieben 24. Oktober 2013 Melden Share Geschrieben 24. Oktober 2013 var dir : Vector3; dir = Vector3.zero; Und am besten die Deklaration zu den anderen Variablen setzten. Mfg. Lustlosz Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Orangesky Geschrieben 24. Oktober 2013 Autor Melden Share Geschrieben 24. Oktober 2013 danke hat aber leider nichts gebracht hab immer noch den error Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tiles Geschrieben 24. Oktober 2013 Melden Share Geschrieben 24. Oktober 2013 http://forum.unity-community.de/topic/1975-scripten-in-der-praxis-der-charactercontroller/ Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sid Burn Geschrieben 25. Oktober 2013 Melden Share Geschrieben 25. Oktober 2013 Eigentlich finde ich den Fehler doch ziemlich Aussagekräftig und er beantwortet doch eigentlich alle Fragen? UnityException: You are not allowed to call this function when declaring a variable. Move it to the line after without a variable declaration. If you are using C# don't use this function in the constructor or field initializers, Instead move initialization to the Awake or Start function. Accelometer Jet..ctor () (at Assets/Scripts/Accelometer Jet.js:3) Simpel von Englisch nach Deutsch übersetzt. Er meckert Zeile 3 an. Und sagt das du diese Funktion nicht aufrufen kannst bei einer Variablen deklaration. Um das Problem zu Lösen sollst du den Aufruf Eine Zeile unter der Variablen Deklaration schieben. Und wenn man C# nutzt soll man die Funktion nicht im Konstuktor oder bei Propertie definition nutzen sondern in die "Start()" oder "Awake()" Funktionen verschieben. Zeile drei ist bei dir. var controller : CharacterController = GetComponent(CharacterController); Ändere es also Beispielsweise in. var controller : CharacterController; function Start() { controller = GetComponent(CharacterController); } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 25. Oktober 2013 Melden Share Geschrieben 25. Oktober 2013 Besser Awake. Aber das steht ja alles in dem Tutorial, das hier schon mehrfach verlinkt wurde, gell? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Orangesky Geschrieben 25. Oktober 2013 Autor Melden Share Geschrieben 25. Oktober 2013 ahh ok danke euch Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.