Jump to content
Unity Insider Forum

rotbartdesign.berlin

Members
  • Content Count

    58
  • Joined

  • Last visited

  • Days Won

    1

rotbartdesign.berlin last won the day on August 17 2012

rotbartdesign.berlin had the most liked content!

Community Reputation

1 Neutral

About rotbartdesign.berlin

  • Rank
    Advanced Member
  • Birthday 08/21/1977

Profile Information

  • Gender
    Male
  • Location
    Berlin
  • Interests
    CGI Projects
  1. Update ich poste hier weil durch den Code der Voreintrag schon so lang ist... Ich habe das Problem bei dem Script oben das mein Player immer ein zweites mal springt wenn die Sprunghöhe zu hoch ist...irgendwie checke ich nicht, was den zweiten Sprung auslöst... auch mit animation ausgeschaltet springt er doppelt wenn ich jumpheight erhöhe kann mir da jemand hilfestellung geben?
  2. Hallo Zusammen ich breche mir einen Zacken aus der Krone den Jump vernünftig aussehen zu lassen. Kann mir da jemand mit Erfahrung mal einiges aufzeigen was ich da machen kann? Ich habe: einen Player nebst Characterkontroller. der hat einen Rigidbody (zur Sicherheit, kann mir denken ich brauch den dafür) und er hat eine JUMP animation zur Zeit spielt er wenn man space drückt nur die Jumpanimation über rigidbody.add relatve force reagiert der controller nicht, ich habs mal 1000 und mal 10000 probiert Ich würde mich freuen wenn mir jemand einige Hiweise geben kann wie man den Jump vernünftig aufsetzt.. Ich poste mal die FSM aus dem Tutorial von Burg Zerg Arcade, welches das JUMP enthält.. danke für Eure Hilfe, ich komm echt nich weiter, da die Steuerung von Petey noch Falltime und son Zeug enthält die aber irgendwie so gar nicht richtig auf den Player wirken mag... using UnityEngine; using System.Collections; [RequireComponent(typeof(CharacterController))] //fügt einen CharacterController hinzu wenn dieser nicht vorhanden ist.Funktion erforderlich! public class FSM : MonoBehaviour { public CollisionFlags _collisionFlags; //Collisionsabfragen für den CharacterController public float rotateSpeed = 50; //die Drehgeschwindigkeit des Chars public float walkSpeed = 50; //die Laufgeschwindigkeit des Chars public int walkSpeedAnimation = 0; public float jumpHeight = 1; public float jumpTime = 1.5f; public float straveSpeed = 25; //die Seitenschrittgeschwindigkeit public int IdleSpeed = 1; //Geschwindigkeit der IDLE Animation public float jumpForce = 1000f; public float JumpSpeed = 1.0f; //Geschwindogkeit der JUMP Animation public int Gravity =10; public float airTime = 2; //die Zeit in der Luft vom letzten mal am Boden public float fallTime = .5f; //die Zeit bis das System es als FALLEN erkennt public float runMultiplier = 1; public enum State { IDLE, INIT, SETUP, RUN } public enum Turn { left = -1, none = 0, right = 1 } public enum Forward { back = -1, none = 0, forward = 1 } private Forward _forward; private Turn _turn; private Turn _strave; private bool _run; private bool _jump; private State _state; //Bewegungsvariable private Transform _mytransform; //Bewegeung private Vector3 _moveDirection; //Richtung (Blickfeld) //Referenz für Char-Kontroller private CharacterController _controller; //zuweisen des Controllers private void Awake() { _mytransform = transform; _controller = GetComponent<CharacterController>(); _state = FSM.State.INIT; } #region StartVoid // Use this for initialization IEnumerator Start () { while(true) { switch(_state) { case State.INIT: Init(); break; case State.SETUP: Setup(); break; case State.RUN: Actionpicker(); break; } yield return null; } } #endregion #region Initialisation private void Init() { if(!GetComponent<CharacterController>()) { return; } if(!GetComponent<Animation>()) { return; } _state = FSM.State.SETUP; } #endregion #region SETUP private void Setup() { animation.Stop(); animation.wrapMode = WrapMode.Loop; animation["jump"].layer = 1; animation["jump"].wrapMode = WrapMode.Clamp; animation.Play("idle"); _moveDirection = Vector3.zero; _turn = FSM.Turn.none; _forward = FSM.Forward.none; _strave = FSM.Turn.none; _run = false; _jump = false; _state = FSM.State.RUN; } #endregion #region Actions private void Actionpicker() { //DIE DREHUNG if(Input.GetButton("RotatePlayer")) { //BEWGUNG ERFRAGEN _mytransform.Rotate(0,(int)_turn * Time.deltaTime * rotateSpeed,0); } //DAS LAUFEN if(_controller.isGrounded) { airTime = 0; _moveDirection = new Vector3((int)_strave,0,(int)_forward * walkSpeed * Time.deltaTime); _moveDirection = _mytransform.TransformDirection(_moveDirection).normalized; _moveDirection *= walkSpeed; if(_forward != Forward.none) { if(_run) { _moveDirection *= runMultiplier; RUN(); } else { WALK(); } } else if(_strave != FSM.Turn.none) { STRAVE(); } else { IDLE(); } if(_jump) { if(airTime < jumpTime) { _moveDirection.y += jumpHeight; JUMP(); _jump = false; } } } /* else { // DAS FALLEN if((_collisionFlags & CollisionFlags.CollidedBelow) == 0) { airTime += Time.deltaTime; if(airTime > fallTime) { FALL(); } } } */ _moveDirection.y -= Gravity * Time.deltaTime; _collisionFlags =_controller.Move(_moveDirection * Time.deltaTime); } #endregion public void MoveMeForward(Forward z) { _forward = z; } public void RotateMe(Turn y) { _turn = y; } public void Strave(Turn x) { _strave = x; } public void JumpUp() { _jump = true; } public void ToggleRun() { _run = !_run; } public void IDLE() { animation["idle"].speed = IdleSpeed; animation.CrossFade("idle"); } public void WALK() { animation["walk"].speed = walkSpeedAnimation; animation.CrossFade("walk"); } public void RUN() { animation.CrossFade("run"); } public void JUMP() { if(_jump == true) { rigidbody.AddRelativeForce(Vector3.up * 3000); animation["jump"].speed = JumpSpeed; animation.CrossFade("jump"); } } public void STRAVE() { animation.CrossFade("Strave"); } public void FALL() { //animation.CrossFade("fall"); } public void FIGHTING() { } }
  3. über den Fehlercode die Lösung gefunden... scheiße für Programmieranfänger... Er hat in irgendeinem Tutorial ne Klasse mit dem Titel ITEM erstellt und von der führt er die Sache weiter.. nachdem ich zum einen das Tutorial und nun auch die Klasse habe geht die Fehlermeldung weg... Die Doku zu den List Geschichten is nich so der Kracher fürn Anfänger zu deutsch für mich gelerntes: es muss ne Klasse sein oder eine eigens definierte Übergabe wie String,int, whatever...) danke. auf die Idee mit dem Fehlercode hätte ich auch ma vor zwei Tagen kommen können...hmpf
  4. Hallo zusammen. Es ist zum verzweifeln... Ich habe es jetzt mit 3 neuen Szenen, einem neuen Projekt und 4 neuen frischen Testscrpten versucht und das Ergebnis ist frustrierend immer das selbe. Ziel: Items verfügbar machen dazu soll die Liste befüllt werden mit Items Es scheitert schon am erstellen der ersten Paar Zeilen. Mono ist der Meinung beim Intellisense alles anzubieten und nach dem speichern (auch das habe ich mehrfach kontrolliert) findet Unity meine Liste nicht... Mein Fehlercode ist IMMER der selbe: error CS0246: The type or namespace name `meineListe' could not be found. Are you missing a using directive or an assembly reference? HIER die Zeilen die das hervorrufen(in einem Videotutorial beginnt es so und Unity macht beim Ersteller an dieser Stelle keine Fehlermeldung...Was mach ich falsch? bitte helft mir, ich brauch unbedingt für meine Prüfung Items die InGame verfügbar bleiben. Der Weg dahin muß nich über List sein, is aber das was ich als Lehrmittel gefunden habe..(Burg Zerg Arcade 008 um die Liste zu begreifen) using UnityEngine; using System.Collections; using System.Collections.Generic; public class ItemList : MonoBehaviour { private List<meineListe> _Loot; // Use this for initialization void Start () { _Loot = new List<meineListe>(); } // Update is called once per frame void Update () { } }
  5. Like.. habs gelöst. Ich habe alles in den Playerinput gemacht direkt in den Statuswechsel und da ich den Clon an einem SpawnPbjekt löschen muss brauchte ich noch private Objekte als Referenz fürs Instaniate UND den destroy. Dadurch ließen sie sich auch gleich bei Statuswechsel killen. Fehler war: Im vorherigen Script waren se autonom und das script hat somit zwar intern auf Testknopf funktioniert aber sonst nich... mit dem find probiere ich gerade das erste bißchen rum, hänge noch an meiner Liste, für die ich den dann auch unbedingt brauche... SOLVED.. Die Anregungen sind gut. SendMessage werd ich mir auchmal genauer anschauen damit kann man sich sicher das Leben auch erleichtern bei der Scriptkommunikation...
  6. unser dozi nimmt dett ooch aber ich muß nehmen was ich hab und für meine Prüfung is Unity out of the Box relevant....leider... aber is schon komisch das die List da nich geht und inner API findet man voll wenig bis keine Doku darüber... Ich kann die Arrays noch nich und brauch dringend den List Kram, weil ich LootItems verwalten will und ich so keine übergabe der Objekte an den Char vernünftig hinbekomme... saugt ungemein...haste recht
  7. Hallo Zusammen, der eine oder andere Forenmember hat es eventuell mitbekommen, ich bastel an Drohnen... So: Meine Drohnen lassen sich Erzeugen. Für jeweils einen von drei Statis eine bestimmte Drohne Wenn ich den Status wechsel dann möchte ich die aktive Drohne deaktivieren und deren Clo vernichten...so der Ansatz ZUM TEST habe ich mir daher per Button folgendes geschrieben, was auch funzt. Ich hab ne blaue, ne grüne und auch ne rote Drohne in meiner Szene als Clon WAS kann ich am kürzesten tun um die Drohne des anderen Status wieder zu destroyen? Ich tu mich schwer damit das GameObjekt / das Prefab zu zerstören... Wurde ich verstanden??wenn nich fragen bitte if(GUI.Button(new Rect(10,10,60,60),"test now")) { if(GameStatic.status == GameStatic.GameModus.NormalMode) { GameObject A; A = Instantiate(MEIN_PrefabA,SpawnPoint.position,gameObject.transform.rotation)as GameObject; DROHNE_follow .MeinSpawnpunkt = SpawnPoint; } if(GameStatic.status == GameStatic.GameModus.MeleeMode) { GameObject B; B = Instantiate(MEIN_PrefabB,SpawnPoint.position,gameObject.transform.rotation)as GameObject; DROHNE_follow .MeinSpawnpunkt = SpawnPoint; } if(GameStatic.status == GameStatic.GameModus.DistanceMode) { GameObject C; C = Instantiate(MEIN_PrefabC,SpawnPoint.position,gameObject.transform.rotation)as GameObject; DROHNE_follow .MeinSpawnpunkt = SpawnPoint; }
  8. neee bei mir liegts am Mono ich hab folgendes Prob ich erstell nach diversen Tuts und Anleitungen die List zuerst mal using System.bla.generic das klappt alles noch aber dann gehts ab. Erst merkt die Autotype Funktion den Listennamen und man kann Coden mitten im schreiben aber erkennt Mono nichtmal mehr den zuvor vorhanden Listennamen das habe ich mit nem Leeren Script, mit anderen Scripten, 3 neuen Szenen und einem neuen Projekt getestet. Ungewöhnlich das ich alles andere an Fehlern beseitigt bekomme aber NUR das immer den selben Scheiß Fehler generiert es läuft immer darauf hinaus das eher den Listennamen nicht mehr findet und ich dann am Ende die .Add Anweisung nicht mehr setzen kann...auch nicht mit Copy und Paste der vorher erkannten vergebenen Namen etc... es ist zum haare raufen... ich poste jetzt mal ein Beispiel auf nem frischen Script in einer frischen Szene...mom
  9. Jungs Ihr seid der Knaller! @Malzbie alles tutti... verstehe das auch so aber mir fehlt wohl noch die Scripterfahrung um diese Sachen klar auszufilterm und aufzubauen das lernt man ja mit der Zeit
  10. das hatte ich so gesetzt public Transform; im Inspector dann zugewiesen ich habe beide scripte getrennt nun nach spawn und drohnenverhalten selber und nun gehts der fehler lag AUCH darin das warum auch immer mein leeres Gameobjekt als Halterung für die verschiedenen Drohnen eigene Koordinaten hatte obwohl es ein child vom Player is... beim Debug haben wir das dann festgestellt nun geht es. waren irgendwie nur 3 zeilen code... kann bei Bedarf gerne abgeben was ich geschrieben hab. Wenn ich beides in ein Script schreibe gehts wieder nich.. liegt aber sicher an meinem Projekt, vielleicht sollte ich nicht zu viel rumtesten.....aber nur so lernt mans... Danke vielmals für Deinen Lösungsansatz, hat prima geholfen, ich konnte nochmal vergleichen mit dem was ich vom Ablauf her verstanden hatte...
  11. Habs im Start hab ich das Standard zugewiesen dann geht alles an und aus auch ohne doppelte Abfrage man ist halt dadurch ertsmal gleich in einem Zwischenstati gewesen durch die Schreibweise.. Aber SOLVED...wie immer wars ein 30 Zentimeter Problem...
  12. negativ Sir! die doppelten Sachen seh ich ein. Aber zum Beispiel in Peteys gängigen und bekannten Tuts zu Hack and Slash (Burg Zerg Arcade) werden sehr sehr häufig leere Voids geschrieben weil es für den einen oder anderen einfach sauberer ist bla bla... Und nein das war schon bedingt absicht: der Status ändert sich nur bei Tastendruck, daher setz ich ihn da gleich auch. Die != Abfrage sollte nur den Status setzen wenn er nicht aktiv ist damit ich durchschalten kann... whatever. Das ganze schaltet jedenfalls die Statis durch aber spielt dennoch die Mukke nich ab ich teste nochmal Deinen Tip... UPDATE ==> Mission failed: if(Input.GetKey(KeyCode.Alpha1) && GameStatic.status != GameStatic.GameModus.NormalMode) { GameStatic.status = GameStatic.GameModus.NormalMode; audio.clip = NormalModeAudio; audio.Play(); audio.loop = true; } if(Input.GetKey(KeyCode.Alpha2) && GameStatic.status != GameStatic.GameModus.MeleeMode) { GameStatic.status = GameStatic.GameModus.MeleeMode; audio.clip = MeleeModeAudio; audio.Play(); audio.loop = true; } if(Input.GetKey(KeyCode.Alpha3) && GameStatic.status != GameStatic.GameModus.DistanceMode) { GameStatic.status = GameStatic.GameModus.DistanceMode; audio.clip = DistanceModeAudio; audio.Play(); audio.loop = true; } die Statis schalten durch die Mukke spielt nichtmehr ab... nochn Update meine Abfrage war richtig weil es nach der Schreibweise ja sagt => bla bla && wenn != Statusx is => status anmachen und sound spielen. man MU? hier nochmal fragen ob das auch nun so ist... in diesem Sonderfall scheint man ohne definierte Statis nicht drumrum zu kommen anderer Ansatz möglich? Die Statis vorher klar definieren?
  13. Hallo "einfache" Sache: Ich habe drei Gamemodes für den Player A, B und C jeder Status soll eine eigene Mukke haben also einen Audioclip. ich habe mir drei voids gemacht, hier eine davon: public void AUDIO_normal() { if(GameStatic.status == GameStatic.GameModus.NormalMode) { audio.clip = BaseAudio; audio.Play(); audio.loop = true; } } und so WOLLTE ich sie steuern: if(Input.GetKey(KeyCode.Alpha1)) { if(GameStatic.status != GameStatic.GameModus.NormalMode) { GameStatic.status = GameStatic.GameModus.NormalMode; if(GameStatic.status == GameStatic.GameModus.NormalMode) { AUDIO_normal(); } } } if(Input.GetKey(KeyCode.Alpha2)) { if(GameStatic.status != GameStatic.GameModus.MeleeMode) { GameStatic.status = GameStatic.GameModus.MeleeMode; if(GameStatic.status == GameStatic.GameModus.MeleeMode) { AUDIO_melee(); } } } if(Input.GetKeyUp(KeyCode.Alpha3)) { if(GameStatic.status != GameStatic.GameModus.DistanceMode) { GameStatic.status = GameStatic.GameModus.DistanceMode; } if(GameStatic.status == GameStatic.GameModus.DistanceMode) { AUDIO_distance(); Wie so oft: GEHT NICHT Suche nun nach einer einfachen schnellen Lösung die Sounds wiederzugeben bei Statuswechsel... weils schon so drinsteckt vielleicht mit switch Case lösen?
  14. ja war es ein fsm hab ich für die Moves also eines bauen für die teleports wäre auch n gute sache...auch schon überlegt... irgendwie spackt mein Monodevelop mit den Generic LIST<> sachen und übernimmt diese nicht.oder nicht immer also mal sehen wie ich da zu Wege gehe
  15. Ich möchte eine Art Drohne Spawnen. Das zielen und der andere Kram klappt und ist als Prefab einsatzbereit Die Drohne soll nur in einem bestimmten Modus sichtbar sein. Also dachte ich Instantiate.. Leider will das nicht so recht weil ich etwas übersehe.... Der Spawnpoint ist dem Player untergeordnet und folgt ihm, an diesem möchte ich einige Distanzwaffe anbinden und dort einblenden/erzeugen. Wenn ich in den Modus wechsele und instantiere, dann entseht ein Clon der Drohne dieser Clon ist unabhängig vpm Spawnpoint und meine Frage ist, komme ich um das scripten der Verfolgung drumrum indem ich den Clon auch dem Player unterordnen kann? hier mal der Code bisher if(GameStatic.status == GameStatic.GameModus.DistanceMode) { GameObject Distanzwaffe; Distanzwaffe = Instantiate(DistanzEqip,EquipSpawnpoint.position,gameObject.transform.rotation)as GameObject; } ------------------------------------------------------------------------------------------------ Update: Nichts zu wollen. Das Problem ist mir klar, nur dessen Lösung noch far away: Ich habe eine Kuge(drohne) Diese Drohne hat ein Script das Sie zielen und schießen läßt wenn der GameModus es erlaubt. Der Player hat in seiner Struktur ein leeres Gameobjekt an dem die Distanzgeschichten angeheftet werden sollen Die Drohne hat eine FolgeMir Funktion und diese funktiert wenn diese in der Szene normal vorhanden ist gespeichert als Prefab aber verliert sie NUR den Punkt an dem Sie spawnen soll. dadurch wird instanziert aber sie folgt nich Was kann ich tun um alles im Script so an das Prefab weiterzugeben das der Transform auch drinbleibt? er ist im übrigen als einziges dickgedruckt.. Die Drohne //Mein Ray Vector3 myRay; //Hitpoint RaycastHit hit; //Spawnpoint Projektil public Transform WURF_spawnpoint; //das Projektil public GameObject Patrone; //Beschleunigungs-Anpassung public int RiggidForce; //eigene Position private Transform myTransform; //zu folgende Position public Transform follow; //Audioclips public AudioClip FIRE_gun; public AudioClip Movement; private bool MovementSound = false; //Objekt der Zielposition GameObject FollowTarget; // Use this for initialization void Start () { myTransform = transform; follow = FollowTarget.transform; } // Update is called once per frame void Update () { myTransform = transform; Vector3 delta = hit.point; transform.LookAt(delta); myTransform.position = follow.position; //---RAYCASTING--- zur Ermittlung der Cursorposition Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); Physics.Raycast(Camera.main.transform.position, ray.direction,out hit, 1000f); Debug.Log(hit.point); if(Input.GetKeyDown(KeyCode.Mouse0)) { Schießen(); } renderer.enabled = false; } void Schießen() { if(GameStatic.status == GameStatic.GameModus.DistanceMode) { GameObject Pat; Pat = Instantiate(Patrone,WURF_spawnpoint.position,gameObject.transform.rotation)as GameObject; Pat.rigidbody.AddRelativeForce(Vector3.forward * RiggidForce); audio.PlayOneShot(FIRE_gun); Destroy(Pat,5); } } } Der Spawn if(GameStatic.status == GameStatic.GameModus.DistanceMode) { if(einmalig == false) { GameObject Distanzwaffe; Distanzwaffe = Instantiate(DistanzEqip,EquipSpawnpoint.position,gameObject.transform.rotation)as GameObject; einmalig = true; } } NEW EDIT Einfaches Script, aufgeteilt auf Spawn und Motion, in der Hoffnung es hilft. Dozent bekommt es auch nicht geregelt (hämisch grinsen oder weinen?). Motion: DER FOLLOW => Prefab vorher in der Szene ohne Spawn => Code geht, Objekt kommt mit...reicht aus! using UnityEngine; using System.Collections; public class TESTS : MonoBehaviour { private Transform myTransform; public Transform follow; GameObject FollowTarget; // Use this for initialization void Start () { myTransform = transform; follow = FollowTarget.transform; } // Update is called once per frame void Update () { myTransform.position = follow.position; } } Wenn ich das GameObject nun als Prefab anlege geht mir der Follow verloren und ich kann in im Projektprefab nur ansehen aber nicht ändern. Wenn ich das Item als Prefab generiere dann wird Follow Eintrag fettgedruckt im Inspektor, im Prefab verschwindet er... Aufbau: Player => an Player angeheftet leeres GameObjekt => als Spawnhalterung für Distanzwaffen Spawnitem => soll an Spawnhalterung gespawnt werden => soll an der Halterung bleiben und dessen Postion übernehmen habe festgestellt das die Spawnhalterung eigene Koordinaten hat, beim Dozenten hat Sie aber die vom Player wegen Unterordnung.... keinen Plan weiter
×
×
  • Create New...