Jump to content
Unity Insider Forum

Betankungssystem


Jaison

Recommended Posts

Hi leute,

 

Ich stehe grade vor der Frage wie man am Besten ein solches System erstellen kann.

Eine Idee und die Vorstellung der Umsetzung habe ich, lediglich die Umsetzung in Script macht net das was es soll.

 

Und zwar soll es so laufen das wenn ich z.B mit einem Fahrzeug in einem Trigger fahre,

ein Symbol angezeigt wird(das ist nicht das Problem,nebensächlich),

wenn ich das mit einer Taste Kombiniere, also Trigger + Taste, soll der Tankvorgang gestartet werden.

 

Möglichst mit einer Vari zum einstellen der Geschwindigkeit.

Dieser Vorgang sollte bis zu einem bestimmten Füllstand laufen und entweder Spätestens bei Vollem tank enden,oder über die selbe Taste unterbrochen werden.

 

Hat jmd Tipps dazu.

 

 

Bevor jmd Fragt:

Nein ich will keinen (vorgekauten)Code,lediglich Tipps dazu.

Nehme ihn aber trotzdem gerne an.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Pseudocode als Tipp:

Update:
Wenn IstInBetankZone und TankenTasteGedrückt und Tank nicht voll dann
{
 starte Tankvorgang
}

Wenn IstAmTanken dann
{
 Erhöhe Tankfüllmenge um TankdurchsatzProSekunde * DeltaTime
 Wenn Tank ist voll dann
 {
   Beende Tankvorgang
 }
}

Wenn IstAmTanken und TankenTaste Losgelassen
{
 Beende Tankvorgang
}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jo danke das hilft mir erstmal auf die Sprünge.

 

Abgesehen vom letzten teil, meinte ich das erneute Drücken der taste, aber das ist ja nicht direct relevant ob nun loslassen oder drücken.

 

Es is ja auch lediglich ein Tipp,wie das aussehen könnte.

 

Ich setze das mal um,und wenn was is meld ich mich nochmal.

 

MFG Jaison

Link zu diesem Kommentar
Auf anderen Seiten teilen

So ich hab mir das grad mal anhand deines Tipps zusammen getippt.

 

public var fuel : float = 1000.0;
public var InZone : boolean = false;
public var TankdurchsatzProSekunde : float = 10.0;
public var fuelmax : float = 1000.0;


function OnTriggerEnter (other : Collider) {
   InZone = true;
}

function Tankvorgang()
{
fuel + TankdurchsatzProSekunde * DeltaTime;
} 


function Update ()
 {


 if (Input.GetButtonDown ("Tanken") && InZone == true && Tankvorgang == false && (fuel <= fuelmax)
  {
	 Tankvorgang();
 }
  else fuel == fuelmax
   {
    Tankvorgang = false;
   }
  }

 

Aber irgendwas läuft da falsch?

 

Assets/Resources/Meshes/HelicopterArtwork/Scripts/Helicopter/HelicopterController.js(131,9): BCE0044: expecting EOF, found 'else'.

Assets/Resources/Meshes/HelicopterArtwork/Scripts/Helicopter/HelicopterController.js(128,17): BCE0044: expecting ), found '{'.

 

Als basis dient der HelicopterController.js

aus dem FPS kit: http://armedunity.com/index.php?/files/file/13-fps-kit-2/

Link zu diesem Kommentar
Auf anderen Seiten teilen

Folgende Punkte sind mir aufgefallen:

  1. In OnTriggerEnter wird nicht geprüft ob der Trigger der korrekte Auftank Trigger ist, dass könntest du zB anhand des Tags vom collider.gameObject prüfen.
  2. Es gibt kein OnTriggerLeave OnTriggerExit
  3. der Tankvorgang erhöhrt nicht die fuel Variable sondern addiert nur etwas ohne etwas mit dem Ergebniss zu machen, versuche += anstatt +
  4. DeltaTime gibt es nicht, du suchst vermutlich Time.deltaTime
  5. Input.GetButtonDown ist nur 1 Frame lang true wenn du eine taste drückst, du suchst Input.GetButton.
  6. Bei bools in Bedingungen kannst du gut und gerne auf == true und == false verzichten: bla == true ist das selbe wie bla und bla == false ist das selbe wie !bla
  7. Beim if fehlt eine schließende Klammer.
  8. Beim else fehlt die öffnende und schließende Klammer
  9. Du versuchst false auf Tankvorgang zuzuweisen, Tankvorgang ist aber eine Methode und kann mit etwas aufgerufen werden, aber nicht etwas zugewiesen bekommen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

...nur damit er nicht nach dem falschen Begriff sucht: "OnTriggerExit", nicht "OnTriggerLeave"... alle anderen wissen aber was gemeint ist ;)

 

Ich weiß selber das es des net gibt.

 

So dermaßen aufm Kopf gefallen bin ich noch net ;) .

Hab nur grad eine art Burndown,vom ganzen Moddeling.

PS:Is Net bös gemeint!

 

Habe es schon soweit klar bekommen, das Betanken funzt nun,nur geht er noch über den maximal wert hinaus.

Aber das hab ich auch gleich.

Dann gehts an den Nächsten Punkt des Systems.

 

Werde dann wenn ich alles soweit klar habe den Code Posten,

vtl hat jmd dann noch Tipps zu Verbesserung,zumindest sollte es dann auch jmd der sowas auch ggf haben möchte helfen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...