Jump to content
Unity Insider Forum

Einsteigen Aussteigen beim Fahrzeug


Slayer

Recommended Posts

Ich komme leider einfach nicht weiter.

 

Ich habe jetzt zu letzt mit dem Script versucht aufn Punkt zu kommen. leider klapt es nicht. Folgendes soll Passieren. Fahrzeug steht dort. Ich gehe in. Dort ist ein Trigger. Drücke E. Steige ins Fahrzeug ein. Nun Macht sich der Player Unsichtbar oder löscht sich, Wird Inaktiv, was auch immer. Dafür kann ich aber nun das Fahrzeug steuern. Wenn ich nun Wider E Drücke, wird die Fahrzeug Steuerrung soweit Deaktiviert das ich ganz normal den Player wider Spielen kann der dann bei einem Spawnpoint wider Inizialisiert werden soll.

 

Kleiner Anfang den ich ausprobiert habe:

 

   var Raumschiff : Transform;
   var player : Transform;
   var exitPunkt : Transform;
   var einstiegTrigger : Transform;
   var PlayerCamera : Camera;
   var RaumschiffCamera : Camera;
   var isPlayerVisable : boolean;

   function update (){
   if (Input.GetButtonDown("E")&& isPlayerVisable){
   //Macht Spieler Inaktiv und legt den lehrlauf ein
   player.gameObject.SetActiveRecursively(false);
   player.gameObject.active = false;
   // Spieler spawnt beim
   player.parent = exitPunkt.transform;
   player.transform.localPosition = Vector3(-1.5,2,0);
   //Parent playerParent zum Raumschiff
   exitPunkt.parent = Raumschiff.transform;
   exitPunkt.transform.localPosition = Vector3(-0.5,2,0);
   // Raumschiff als kontrollierbar angeben
   GameObject.Find("Raumschiff").GetComponent("ControllScript").enabled = true;
   PlayerCamera.enabled = false;
   RaumschiffCamera.enabled = true;
   }

   else
   {
   if (Input.GetButtonDown("E")){
   // Macht Charakter wider Spielbar
   player.gameObject.SetActiveRecursively(true);
   player.gameObject.active = true;
   player.transform.parent = null;
   // Spawnt Spieler beim Exit Punkt
   exitPunkt.parent = einstiegTrigger.transform;
   // Raumschiff wird nicht mehr kontrolliert
   GameObject.Find("Raumschiff").GetComponent("ControllScript").enabled = false;
   PlayerCamera.enabled = true;
   RaumschiffCamera.enabled = false;
   }
   }
   }

   function OnTriggerEnter(Player : Collider) {
   isPlayerVisable = true;
   }

   function OnTriggerExit(Player : Collider) {
   isPlayerVisable = false;
   }

 

Ich kenne mich mit JS weniger aus. Vll hätte da wer ne c# lösung. Das eben nur ein etwas umgebautes Script jetzt gewesen.

 

Danke vielmals :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Da du ja c# kennst, weisst du ja wie man dort Variablen deklariert und wie manche andere Dinge geschrieben werden sollten.

Du willst ja mit dem Raumschiff oder was auch immer interagieren, wenn du nah dran bist.

Klug wäre es, wenn du dem Raumschiff einen Spherecollider geben würdest, der auf trigger geschaltet ist und die Reichweite für das Triggern gibt. Also einges größer ist als das Raumschiff.

Triggern geht immer in beide Richtungen. Somit würde das Raumschiff wissen wenn was im Trigger ist und das dann auch der Player ist, und der Player würde wissen, dass er im Raumschifftrigger steht. Ich würde da übrigens OnTriggerStay auswerten, sag dir auch gleich warum.

So, Raumschiff und Player triggern jetzt gegenseitig. Beide Objekte habe ja ein Steurungsscript und über das Stay wird einfach in beiden Scripts zusätzlich abgefragt, ob die Taste E gedruckt wird. Wenn dem so ist, beschreibst du einfach eine Variable. Die könnte eingestiegen heissen.

Im Playerscript fragst du die Variable in der Update ab. Und wenn die jetzt auf true ist und der Meshrenderer und der/die Collider noch aktiv sind, dann schaltest du diese einfach ab. Der Player wird nicht mehr gesehen und seine Collider gehen auch nicht mehr, stören also in der Szene nicht. Außerdem nutzt du diese Variable damit du dem Player nicht mehr steurn kannst.

Im Raumschiffscript fragst du auch diese eine Variable ab und nur wenn sie true ist, kann gesteuert werden.

 

Im Raumschiff-Script wird auch immer noch die Taste E abgefragt, denn du willst ja auch wieder aussteigen können.

Wird E gedrückt und darf das auch ( wenn das Raumschiff gelandet ist), dann stellst du die Steuervariable im Raumschiff wieder auf false und Springst ins Playerscript in eine Funktion und übergibst dem Player die neuen Koordinaten, wo er jetzt entstehen soll.

In dieser Player-Funktion wir der übergebene Vector3 genutzt um die Position des Players da hin zu setzen und gleichzeitig wird der Meshrenderer und Collider wieder eingeschaltet.

Das OnTriggerStay sollte jetzt wieder feuern, auch wenn der Player nicht in den trigger rein bewegt wurde, sondern da hin gebeamt wurde. Du könntest jetzt also sofort wieder E drücken und wieder einsteigen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...