I Small/Mid RTS-Spiel mache, ich habe folgendes notwendig:SpriteKit Ranges Detect
Ich möchte gegnerische Spieler Verbündeten angreifen und umgekehrt, wenn sie in jedem Angriff Bereich.
Meine Frage ist: Was wäre ein besserer Ansatz zu finden, ob gegnerische Einheiten in Angriffsreichweite von Verbündeten sind oder umgekehrt?
Was habe ich versucht:
Vorerst habe ich versucht SKNodes
mit SKPhysicsBodies
für jede Einheit Knoten hinzuzufügen.
Ich kann sehen, dass FPS gehen, wenn der Kontakt passiert ... Ich denke, es war nicht der beste Weg zu erkennen, ob Feinde in Reichweite sind.
Ich denke, meine Alternative besteht darin, eine Nested Loop innerhalb der Update-Methode zu starten und zu prüfen, ob es gegnerische Einheiten innerhalb des Radius gibt. Ich bin nicht sicher, ob es der beste Ansatz ist, aber mit diesem Ansatz kann ich mit einigen Parametern spielen und vielleicht die Routine für meine eigenen Bedürfnisse optimieren.
Ich würde gerne wissen, ob es bessere Alternativen gibt.
Vielen Dank für deine Antwort, Ich habe einige Kämpfe mit Einheiten für verbündete Einheiten (Ich erlaube dem Benutzer, die Einheiten einzeln oder dynamisch zu steuern). Feindliche Einheiten werden in der Tat von festen Einheiten angegriffen. Danke für die Entfernungsvorschläge – ColdSteel
Sie halten einfach einen Stapel Kaderknoten griffbereit und verwenden die 'moveToParent' Methode, um zwischen ihnen zu wechseln – Knight0fDragon
Ich schätze, es passt einfach nicht in mein Gameplay (Ich möchte die Einheitssteuerung erreichen wie es war in Myth2 Spiel). In jedem Fall habe ich den Großteil Ihres Vorschlags umgesetzt. Ich überprüfe für jede Einheit, wie weit sie von der gegnerischen Truppe entfernt ist. Wenn sie in Reichweite ist, greift sie an, wer immer im gegnerischen Trupp ist. Ich rufe diese Überprüfung auf einen Hintergrund Thread von der - Update-Methode ...aber wenn ich kein Shield Window nenne, sind die fps ungefähr 40 und ich habe nur 11 Einheiten 1 freundlich und 10 Feinde in 1 Squad :-( – ColdSteel