In diesem Handbuch wird beschrieben, wie Sie mein programmierbares Blockskript für den Planetary Autopilot Manager einrichten und verwenden.
Grundlegende Einrichtung / Versandanforderungen
Schiffsanforderungen
- Ein Fernbedienungsblock, der in die gewünschte Vorwärtsrichtung weist
- Mindestens 1 Strahlruder in Vorwärts-, Rückwärts- und Aufwärtsrichtung relativ zum Fernsteuerungsblock
- Mindestens 1 Gyroskop (kann beliebig platziert werden)
- Mindestens 1 Kamera an der Vorderseite des Schiffes und oben nach oben ausgerichtet, relativ zum Fernsteuerungsblock. [Mehrere Kameras werden unterstützt, es wird empfohlen, sie nahe beieinander zu platzieren]
- Mindestens 1 Kamera auf der Unterseite des Schiffs und die Oberseite nach vorne gerichtet, relativ zum Fernbedienungsblock [Mehrere Kameras werden unterstützt, es wird empfohlen, sie nahe beieinander zu platzieren]
Benennen Sie die folgenden Blöcke
- Benennen Sie den Fernbedienungsblock so, dass er mit der Variablen „nameOfRemoteControl“ übereinstimmt, die standardmäßig „Remote Control“ lautet.
- Ordnen Sie alle vorderen Kameras einer Gruppe zu und passen Sie den Gruppennamen an die Variable „nameOfHorizontalCameraGroup“ an, die standardmäßig „PA Forward Cams“ lautet.
- Ordnen Sie alle nach unten gerichteten Kameras einer Gruppe zu und passen Sie den Gruppennamen an die Variable „nameOfVerticalCameraGroup“ an, die standardmäßig „PA Down Cams“ lautet.
Diese Variablen können im Code geändert werden, um sie Ihren Präferenzen anzupassen, wenn Sie dies wünschen.
Anwendung
Sobald die Einrichtung abgeschlossen ist und Sie ohne Fehler kompilieren können, sind hier die Befehle, die Sie ausführen können.
Alle Befehle haben das folgende Format:
GOTO
- Beschreibung – Weist den Autopiloten an, sich zum angegebenen Ort zu bewegen
- Befehl – GOTO
- Parameter #1 – Die Wegpunktinformationen des Zielorts
- Beispiel – „GOTO,GPS:KiwiNinja99 #1:55985.37:16475.92:17445.72:“
- Hinweis – Entfernen Sie beim Kopieren von Wegpunktinformationen aus dem GPS-Menü die Farbinformationen am Ende „#FFFFFFFF“, siehe Beispiel für funktionierende Eingaben.
STOP
- Beschreibung – stoppt und setzt den Autopiloten zurück
- Befehl – STOP
TARGET_ELEVATION
- Beschreibung – legt die Zielhöhe fest, die während des Flugs beibehalten werden soll.
- Befehl – TARGET_ELEVATION
- Parameter Nr. 1 – Die zu haltende Höhe in Metern (m).
- Beispiel – „TARGET_ELEVATION,1000“
- Hinweis – Die Höhenmessung wird durch den Befehl ELEVATION_TYPE bestimmt.
- Hinweis – Höher ist in der Regel sicherer und stürzt weniger wahrscheinlich ab
ELEVATION_TYPE
- Beschreibung – Legt fest, wie die aktuelle Höhe gemessen wird (entweder vom Meeresspiegel des Planeten oder von der Planetenoberfläche)
- Befehl – ELEVATION_TYPE
- Parameter #1 – „SEALEVEL“ oder „SURFACE“
- Beispiel – „ELEVATION_TYPE,SEALEVEL“
HÖCHSTGESCHWINDIGKEIT
- Beschreibung – Legt die Höchstgeschwindigkeit für den Autopiloten fest
- Befehl – MAX_SPEED
- Parameter #1 – die einzustellende Höchstgeschwindigkeit
- Beispiel – „MAX_SPEED,75“
- Hinweis – Langsamer ist in der Regel sicherer, wurde jedoch bei ausreichender Höhe (100 m+) bei 500 m/s als mäßig sicher getestet.
Konfiguration & Tipps
Einige Variablen innerhalb der PlanetaryAutopilotManager-Klasse können geändert werden. Einige sind mit ihren eigenen Getter/Setter-Funktionen schnittstellenfähig, bei anderen wäre es wahrscheinlich sinnvoll, sie einfach einmal zu ändern und fertig zu sein. Ich werde hier auf die Vor- und Nachteile des Wertebereichs für jede Variable eingehen, die ich während des Testens entdeckt habe.
Ich empfehle dringend, Ihre Schiffe mit den verschiedenen Konfigurationsoptionen in einer kreativen Welt zu testen, bevor Sie sie in einer Überlebenswelt einsetzen.
Höchstgeschwindigkeit
- Hohe Geschwindigkeiten sind gefährlicher, da der Autopilot im Laufe der Zeit weniger Scans durchführen kann, was bedeutet, dass er eher ein Hindernis verfehlt, dem er sich nähern könnte. Wenn Sie jedoch auf Geschwindigkeit bestehen, empfehle ich, mehrere Kameras in jeder Kameragruppe (vorwärts und unten) zu platzieren, um dies auszugleichen.
- Empfohlene Reichweite: Für nur 1 Kamera in jeder Gruppe, 50–75 m/s. Fügen Sie weitere Kameras für mehr Geschwindigkeit hinzu.
Zielhöhe
- Empfohlene Reichweite (300m-1000m)
- Höhere Werte bedeuten, dass Ihr Schiff mit geringerer Wahrscheinlichkeit auf einen Berg oder ein anderes Hindernis trifft, was eine geringere Wahrscheinlichkeit eines Absturzes bedeutet.
SollHöhenToleranz
- Empfohlene Reichweite (10m-50m)
- Wie weit Sie eine vertikale Verschiebung von der Zielhöhe akzeptieren, damit keine Korrektur stattfindet. Ein beträchtlicher Wert dafür bedeutet, dass Ihr Schiff nicht so oft versucht, sich selbst zu korrigieren, und einfach weiterfährt und dabei Energie spart (insbesondere wenn Höhentyp auf Oberfläche eingestellt ist).
ScanningDistanceForwardModifier
- Die Variable ändert den Bereich, den die Vorwärtskameras scannen, um nach Hindernissen zu suchen, und beginnt, nach oben zu fliegen (aber sich immer noch vorwärts zu bewegen), um sie zu vermeiden.
- Höhere Werte bedeuten längere Heads-up-Zeiten, scannen aber seltener. Und umgekehrt für niedrigere Werte.
- Muss höher sein als CruisingDistanceModifier
- Empfohlener Bereich (1.5f-2.5f)
ScanningDistanceDownwardModifier
- Die Variable ändert den Bereich, den die nach unten gerichteten Kameras scannen, um nach Hindernissen zu suchen, und beginnen, nach oben zu fliegen (aber sich immer noch vorwärts zu bewegen), um sie zu vermeiden.
- Höhere Werte bedeuten längere Heads-up-Zeiten, scannen aber seltener. Und umgekehrt für niedrigere Werte.
- Muss höher sein als CruisingDistanceModifier
- Empfohlener Bereich (1.5f-2.5f)
CruisingDistanceModifier
- Diese Variable modifiziert die Entfernung, in der das Schiff horizontal vollständig zum Stehen kommt und hochfliegt, wenn ein erkanntes Hindernis zu nahe ist.
- Höhere Werte bedeuten mehr Sicherheit, aber zu hohe Werte können etwas albern aussehen.
- Sollte mindestens 0.3f kleiner sein als ScanningDistanceForwardModifier und muss größer als 1.1f sein
- Empfohlener Bereich (1.2f-1.5f)
nameOfRemoteControl
nameOfHorizontalCameraGroup
nameOfVerticalCameraGroup
- Dies sind die Namen der Fernbedienungs- und Kameragruppen, nach denen das Programm sucht. Sie können diese gerne ändern, wenn Ihnen die Standardnamen nicht gefallen.
Höhentyp
- Diese Variable bestimmt, ob die aktuelle Höhe vom Meeresspiegel des Planeten oder von der Oberfläche gemessen wird.
- Dies kann durch die Funktion „SetElevationType“ oder durch manuelles Setzen wie die anderen Variablen hier geändert werden.
- Die Meereshöhe bietet möglicherweise einen ruhigeren, weniger holprigen Flug (was Strom spart), aber Sie müssen einen guten Wert finden, der für Sie funktioniert
- Surface ist wahrscheinlich besser geeignet, um auf Anhieb zu arbeiten, wenn Sie zu faul sind, einen guten Wert für den Meeresspiegel zu finden.
Anzahl der Kameras
- Die Anzahl der Kameras in Ihren vorderen und unteren Kameragruppen erhöht die Anzahl der Scans und damit die Sicherheit Ihres Schiffes.
- Der Raycast der Kamera, der zum Scannen verwendet wird, ist jedoch ziemlich rechenintensiv, und wenn Sie sich auf einem Multiplayer-Server befinden, mag Ihr Serveradministrator Sie möglicherweise nicht sehr. Wenn dies ein Problem ist, empfehle ich, so wenig Kameras wie möglich zu verwenden (einige meiner kleineren Schiffe funktionieren gut mit nur 1 Kamera in jeder Kameragruppe).
Skriptschnittstelle
Dieses Programm wurde ursprünglich entwickelt, um Hand in Hand mit einem anderen Skript zu gehen, das ich geplant hatte, aber ich entschied, dass es am besten wäre, dies zuerst zu machen, um eine solide Basis zu haben, auf der ich arbeiten kann. Daher wird es vielleicht für einige der kreativeren Haufen von Ihnen gut funktionieren.
Das Standardprogramm (hauptsächlich in der Hauptschleife) sollte als gutes Beispiel dienen, um Ihnen zu zeigen, wie Sie erfolgreich mit dem Programm interagieren.
Um erfolgreich arbeiten zu können, benötigt das Programm
- A 'MyIni ini = new MyIni();' als Feld deklariert
- Die PlanetaryAutopilotManager.Init(GridTerminalSystem, this, ref ini) im Programmkonstruktor „Program() { }“.
- Der PlanetaryAutopilotManager.Save(ref ini) in der Speicherfunktion des Programms „public void Save() { }“
- Der PlanetaryAutopilotManager.Update(this, updateSource) in der Hauptfunktion des Programms „public void Main(string argument, UpdateType updateSource)“
Solange diese Anforderungen erfüllt sind, sollte das Programm funktionieren. Von hier aus können Sie sich damit verbinden, indem Sie diese Funktionen aufrufen:
*Hinweis* Anywhere-Parameter mit dem Namen „MyGridProgram gp“ bedeuten, dass Sie das Programm selbst einfach mit „this“ übergeben können.
PlanetaryAutopilotManager.SetDestination(Vector3D-Koordinaten, MyGridProgram gp)
- Legt das Ziel fest und beginnt mit der Fahrt zum Ziel.
PlanetaryAutopilotManager.Stop(MyGridProgram gp)
- Hält das Schiff an, stellt alle Triebwerke und Gyroskope auf manuelle Steuerung zurück.
PlanetaryAutopilotManager.SetTargetElevation(float targetElevation)
- Legt die Zielhöhe fest, die das Schiff während seines Flugs zu erreichen versucht.
PlanetaryAutopilotManager.SetElevationType(MyPlanetElevation-Elevationstyp)
- Legt fest, wie die aktuelle Höhe gemessen wird
- MyPlanetElevation.Sealevel – misst vom Meeresspiegel des Planeten
- MyPlanetElevation.Surface – misst von der Oberfläche direkt unter dem Schiff
PlanetaryAutopilotManager.SetMaxSpeed(float maxSpeed)
- Legt die maximale Geschwindigkeit fest, mit der das Schiff fährt
- Stellen Sie nicht höher ein, als der Server zulässt
So überprüfen Sie, ob das Schiff seinen Flug beendet hat
Es gibt zwei Möglichkeiten, wie Sie dies tun können
- Überprüfen Sie, ob die PlanetaryAutopilotManager.destinationIsSet-Variable False ist [if (!PlanetaryAutopilotManager.destinationIsSet)].
- Abonnieren Sie das Ereignis PlanetaryAutopilotManager.FlightCompleted (siehe die Funktion OnFlightCompletion() als Beispiel)
Das ist alles, was wir heute dafür teilen Space Engineers führen. Dieses Handbuch wurde ursprünglich erstellt und geschrieben von KiwiNinja99. Falls wir dieses Handbuch nicht aktualisieren, finden Sie das neueste Update, indem Sie diesen folgen Link.