Wie erstelle ich einen Radar?
von Glowing Orb
benötigt GM 6.0/GM 6.0r
Zuerst muss man sich im klaren sein, welche Art von Radar man erstellen will.
Einen runden oder einen eckigen Radar?
Eine detailreiche Minimap oder einen einfachen Positions-Radar?
etc....
Ob rund oder eckig ist eigentlich reine Geschmacksache (ich bevorzuge rund); eine detailreiche Minimap allerdings kann ein Game zwar optisch stark aufwerten, allerdings muss man dabei aufpassen, dass man sein Spiel nicht zu sehr ausbremst (was bei zu vielen Draw-Funktionen schnell pasieren kann).
Deswegen werden wir in diesem Fall einen runden Radar erstellen, der alle Gegner anzeigt, die sich innerhalb einer bestimmten Entfernung zum Spieler befinden.
Zuerst benötigen wir ein Controller-Objekt, mit einer möglichst niedrigen Depth (z.B. -1661992959), visible und nicht solid. Sprite und mask sind egal.
Dann benötigen wir ein neues Script (mann kann natürlich auch mit "execute a piece of code" arbeiten, ich benutze aber aus Gründen der Wiederverwendbarkeit fast immer Scripts.
Alles anzeigen
Nun noch das Script ins Draw Event des Controller Objects packen, obj_player und obj_enemy erstellen, den Controller und den Spieler je einmal in einen Room stecken, den Gegner ruhig mehrmals, und fertig ist der Radar.
Jetzt könnt ihr noch etwas mit den Farben experimentieren.
Add-On: Bewegungssensor
Wenn man die Zeile
durch
ersetzt, kann man einen Bewegungssensor wie bei Time Splitters 2 programmieren (natürlich nur, wenn man für die Gegner speed zur Fortbewegung nutzt). D.h., dass die Einheit nur sichtbar ist, wenn sie sich bewegt.
Das wars auch schon wieder - euer GO.
von Glowing Orb
benötigt GM 6.0/GM 6.0r
Zuerst muss man sich im klaren sein, welche Art von Radar man erstellen will.
Einen runden oder einen eckigen Radar?
Eine detailreiche Minimap oder einen einfachen Positions-Radar?
etc....
Ob rund oder eckig ist eigentlich reine Geschmacksache (ich bevorzuge rund); eine detailreiche Minimap allerdings kann ein Game zwar optisch stark aufwerten, allerdings muss man dabei aufpassen, dass man sein Spiel nicht zu sehr ausbremst (was bei zu vielen Draw-Funktionen schnell pasieren kann).
Deswegen werden wir in diesem Fall einen runden Radar erstellen, der alle Gegner anzeigt, die sich innerhalb einer bestimmten Entfernung zum Spieler befinden.
Zuerst benötigen wir ein Controller-Objekt, mit einer möglichst niedrigen Depth (z.B. -1661992959), visible und nicht solid. Sprite und mask sind egal.
Dann benötigen wir ein neues Script (mann kann natürlich auch mit "execute a piece of code" arbeiten, ich benutze aber aus Gründen der Wiederverwendbarkeit fast immer Scripts.
GML-Quellcode
- // GO's Radar
- x = view_xview[view_current]; // Diese beiden Zeilen platzieren den Radar in der
- y = view_yview[view_current]; // linken oberen Ecke des Bildschirms.
- draw_set_color(c_white);
- draw_circle(x + 70,y + 70,64,0);
- draw_set_color(c_black);
- draw_circle(x + 70,y + 70,62,0);
- draw_set_color(c_white);
- draw_circle(x + 70,y + 70,2,0);
- //Die obigen Zeilen haben einen schwarzen Kreis mit weißer Umrandung und
- //weißem Mittelpunkt erstellt. (Um genau zu sein waren es 3 konzentrische
- ///Kreise: ein großer Weißer, ein etwas kleinerer Schwarzer und noch ein sehr
- //kleiner Weißer
- draw_set_color(c_red);
- for (n = 0; n < instance_number(obj_enemy); n += 1) {
- object = instance_find(obj_enemy,n);
- if (point_distance(obj_player.x,obj_player.y,object.x,object.y) < 1200) {
- draw_circle(x + 70 - (obj_player.x - object.x)/20,y + 70 - (obj_player.y - object.y)/20,2,0);
- }
- }
- // Mit dem obigen Block zeichnet man pro obj_enemy
- // einen kleinen roten Kreis - aber nur wenn es näher als 1200 Pixel zum
- // Spieler ist
Nun noch das Script ins Draw Event des Controller Objects packen, obj_player und obj_enemy erstellen, den Controller und den Spieler je einmal in einen Room stecken, den Gegner ruhig mehrmals, und fertig ist der Radar.
Jetzt könnt ihr noch etwas mit den Farben experimentieren.
Add-On: Bewegungssensor
Wenn man die Zeile
durch
ersetzt, kann man einen Bewegungssensor wie bei Time Splitters 2 programmieren (natürlich nur, wenn man für die Gegner speed zur Fortbewegung nutzt). D.h., dass die Einheit nur sichtbar ist, wenn sie sich bewegt.
Das wars auch schon wieder - euer GO.
www.glowingorb.de
„Wenn es im Universum noch irgendwo intelligente Lebewesen gibt, dann kennen sie vielleicht Schach, höchstwahrscheinlich jedoch GO“
(Schachweltmeister Emanuel Lasker)
„Wenn es im Universum noch irgendwo intelligente Lebewesen gibt, dann kennen sie vielleicht Schach, höchstwahrscheinlich jedoch GO“
(Schachweltmeister Emanuel Lasker)
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Glowing Orb ()