Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Game Maker Domäne. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

BenBaron

Präfekt

  • »BenBaron« ist der Autor dieses Themas

Beiträge: 25

Game Maker Version: 8.1 Standard

Selbsteinschätzung: GML Fortgeschrittener

  • Private Nachricht senden

1

Sonntag, 28. Februar 2010, 03:24

Direction einer Instanz bei speed 0

Hallo ihr,

ich wollte mal fragen, ob jemand eine Funktion in petto hat, mit der ich die momentan direction einer Instanz rausfinden kann, wenn sie sich nicht bewegt. So wie ich es sehe, kann ich es wahrscheinlich nur über ihren image_index rausfinden, in welche Richtung sie steht, da die direction bei speed 0 ja immer nur 0 ist. Gibt es da vielleicht noch was eleganteres, als über den image_index zu gehen?

Ich möchte bei einem drehbaren Object eine Aktion nur dann zulassen, wenn sich der Spieler innerhalb eines Winkels von +45 und -45 davor befindet.

Gruß, Benny

Tice

***Gold***

Beiträge: 1 376

Game Maker Version: 8.1 Standard

Selbsteinschätzung: GML Experte

Aktuelles Projekt: C#

Danksagungen: 4

  • Private Nachricht senden

2

Sonntag, 28. Februar 2010, 03:30

Ich verstehe dein Problem irgendwie nicht.?
Meinst du nicht:

GML

1
image_angle=deinwert




henrik1235

***Gold***

Beiträge: 1 393

Game Maker Version: 7 Pro

Selbsteinschätzung: GML Experte

  • Private Nachricht senden

3

Sonntag, 28. Februar 2010, 12:35

GML

1
deinedirection=direction

direction ist einen Variable indem die Direction drin ist.

DragonGamer

***Gold***

Beiträge: 1 240

Game Maker Version: 8 Pro

Selbsteinschätzung: GML Fortgeschrittener

Aktuelles Projekt: Dark Invasion

Danksagungen: 1

  • Private Nachricht senden

4

Sonntag, 28. Februar 2010, 12:45

glaube ihr versteht ihn falsch.

Denke er meint das er die Direction rausfinden will auch wenn die Geschwindigkeit null ist also praktisch die letzte vorhandene Direction.

Also schreib:

if !(speed = 0) then deine_direction = direction;

Somit wird deine_direction nur auf die direction gesetzt wenn speed nicht gleich null ist.

Willst du auf diese Drachen und -eier klicken?
Sie werden sich freuen ;)



henrik1235

***Gold***

Beiträge: 1 393

Game Maker Version: 7 Pro

Selbsteinschätzung: GML Experte

  • Private Nachricht senden

5

Sonntag, 28. Februar 2010, 13:07

Ich weis warum. Du benutz doch D&D richtig?

Wenn du da auf das Rechteck in der Mitte klickst das Stop dings. Dann wird direction auch zu 0.

GML

1
2
direction=deine dir von rechts(0) gegen den uhrzeigersinn zu rechts(360)
speed=speed

BenBaron

Präfekt

  • »BenBaron« ist der Autor dieses Themas

Beiträge: 25

Game Maker Version: 8.1 Standard

Selbsteinschätzung: GML Fortgeschrittener

  • Private Nachricht senden

6

Montag, 1. März 2010, 17:24

Danke für die Antworten...also es ging mir darum, dass ich wissen musste, in welche Richtung die Instanz gedreht ist, auch wenn sie eine speed von 0 hat. Da ja aber die direction bei speed 0 immer auch 0 ist konnte ich direction nicht benutzen. Ich habe das jetzt auch über image_index gelöst. Ich prüfe also, welcher image_index nach der drehung da ist und schließe von daher auf die richtung. Das klappt... .



Wisst íhr vielleicht noch, ob es möglich ist, eine variable auf den sprite_index zu setzen? Also praktisch genauso, wie man image_index = direction machen kann? Da er beim sprite_index aber eine ressource haben will, klappt das so bis jetzt nicht.



Gruß, Benny

Beiträge: 183

Game Maker Version: 8.1 Standard

Selbsteinschätzung: GML Fortgeschrittener

  • Private Nachricht senden

7

Montag, 1. März 2010, 19:24

Was meinst du genau mit "Variable auf sprite_index" setzen.

Drachen

Gargoyle

Beiträge: 260

Game Maker Version: 8.1 Standard

Selbsteinschätzung: GML Fortgeschrittener

Aktuelles Projekt: mal dies und mal das, Adventskalender

  • Private Nachricht senden

8

Montag, 1. März 2010, 19:55

Hi

Also ich löse es meistens mit Image_angle.
Ich gebe dir mal ein Beispiel
Greate event: (Objekt Falkgeschütz)

GML

1
2
3
4
5
6
7
8
///////////////////////////////////////////
// Falkgeschütze ausrichten - nach oben  //
///////////////////////////////////////////
{
global.aktueller_Winkel = 0;
Anfangswinkel = 90;
image_angle = Anfangswinkel;
}


Step event: (Objekt Falkgeschütz)

GML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
////////////////////////////////////////////////////////
// Flaks auf der linken Seite drehen sich zum Player  //
////////////////////////////////////////////////////////
{
dis_Flaks = point_distance(x,y,obj_Player.x,obj_Player.y);
Winkel = (point_direction(x,y,obj_Player.x,obj_Player.y));
Winkel_Anfang = Anfangswinkel;

/////////////////////////////////////////
// Die Kanonen drehen sich zum Player  //
/////////////////////////////////////////
if (dis_Flaks<400)
   {
    if (Winkel <135 && Winkel >45) // Die Kanone bewegt sich nur zwischen  45 Grad und 135 Grad
        {
        image_angle = scr_rotate(Winkel,5,image_angle);
        global.aktueller_Winkel = image_angle
        }
    }
else 
   {
   image_angle = scr_rotate(Winkel_Anfang,5,image_angle);
   }
    
}


Scrippt - scr_rotate

GML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// argument0 = Winkel zu dem gedreht werden soll.
// argument1 = Rotationsgröße.
// argument2 = Aktueller Winkel.
var angle,d;
angle=argument2
d = angle-argument0
if (abs(d)<=argument1)
    {
    angle=argument0
    }
else
    {
    if (d>180)
        {
        d-=360;
        }
    else if (d<-180)
            {
            d+=360;
            }

         if (d>0)
            {
            angle=(angle+360-argument1) mod 360;
            }
         else
            {
            angle=(angle+argument1) mod 360;
            }
    }
return (angle)


Das Script stammt nicht von mir. Das hat einer von hier geschrieben. Das Script bewirkt das die die Kanone langsam zum Player ausrichtet.

So hoffe das es dir weiter helft.

Gruss Drachen :)

P.S.
Leiter läst es deine Signatur offen welche Versino du von GM benutzt. Wenn du keine gekaufte Version besitzt, funktioniert image_angel nicht.
Dann ist mein Betrag für die Katz :D

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Drachen« (1. März 2010, 20:00)


DragonGamer

***Gold***

Beiträge: 1 240

Game Maker Version: 8 Pro

Selbsteinschätzung: GML Fortgeschrittener

Aktuelles Projekt: Dark Invasion

Danksagungen: 1

  • Private Nachricht senden

9

Montag, 1. März 2010, 20:14

@Drachen
Glaube das war nicht das was er wollte :/


@BenBaron
Erklär mal was du machen willst, ich verstehs nähmlich auch nicht.

Willst du auf diese Drachen und -eier klicken?
Sie werden sich freuen ;)



MasterXY

***Gold***

Beiträge: 1 645

Game Maker Version: 8 Pro

Selbsteinschätzung: GML Experte

Aktuelles Projekt: Geheimprojekt mit Soul Reaver, Hard Recoil

Danksagungen: 23

  • Private Nachricht senden

10

Montag, 1. März 2010, 20:33

Ich weiß nicht was ihr alle habt? Die direction eines Objekts is unabhängig vom speed also ist sie auch nicht automatisch 0 wenn speed 0 ist.

© 2008 by Teamgrill Productions

DragonGamer

***Gold***

Beiträge: 1 240

Game Maker Version: 8 Pro

Selbsteinschätzung: GML Fortgeschrittener

Aktuelles Projekt: Dark Invasion

Danksagungen: 1

  • Private Nachricht senden

11

Montag, 1. März 2010, 20:35

Glaube er hat das gemacht was Henrik1235 gesagt hat.
Dann wird direction tatsächlich auf 0 gesetzt.

Vieleicht sollte er das einfach weglassen und stattdessen speed = 0 schreiben..

Willst du auf diese Drachen und -eier klicken?
Sie werden sich freuen ;)



BenBaron

Präfekt

  • »BenBaron« ist der Autor dieses Themas

Beiträge: 25

Game Maker Version: 8.1 Standard

Selbsteinschätzung: GML Fortgeschrittener

  • Private Nachricht senden

12

Dienstag, 2. März 2010, 13:44

Jau...wenn man das Symbol bei DnD benutzt dann wird die direction null...bei speed 0 nicht...danke dafür :) . Wieder was gelernt.



Ich kann schreiben image_index = direction. Wenn ich dann 360 subimages habe, werden die automatisch bei der entsprechenden direction eingesetzt. So was ähnliches bräuchte ich mit sprite_index. Ich kann hier keine subimages verwenden sondern muss das sprite nach bestimmten Gesichtspunkten wechseln.



Ich müsste sonst schreiben:



Quellcode

1
2
3
4
5
6
7
if (inhalt > 0 && inhalt <= 18)
 
    sprite_index = spr_1K
 
else if (inhalt > 18 && inhalt <= 36)
 
    sprite_index = spr_2K






und das dann bis zu einem sprite_index von spr_60K...das wird aber bissl viel. Jetzt hab ich zwar eine Möglichkeit, das benötigte sprite zu berechnen, ich weiß aber nicht welches VariablenFormat die funktion sprite_index erwartet, da sie ja ressourcen braucht.



Gruß, Benny

DragonGamer

***Gold***

Beiträge: 1 240

Game Maker Version: 8 Pro

Selbsteinschätzung: GML Fortgeschrittener

Aktuelles Projekt: Dark Invasion

Danksagungen: 1

  • Private Nachricht senden

13

Dienstag, 2. März 2010, 15:53

Ressource sind auch nur Zalhlen! bzw Konstanten, wenn man es abe rmit zahlen eingibt kann es probleme geben.

Erster Vorschlag:

mach die 60 Sprites (was ich aber eher unsinnig finde; warum brauchst du so viele Sprites? Du kannst alles in ein Sprite tun und nur die bestimmten Subimages durchspulen, geht mit code. naja egal), undbedingt nacheinander in der richtigen Reihenfolge in den Sprites-tree im GM und füg später keine neuen ein oder lösche sie. Dadurch sind die Zahlen des Sprites aufeinander folgen.

Dann musst du nur noch schreiben:

sprite_index = spr_1K + floor(Inhalt/18)




Alternativ kannst du schreiben: sprite_index = variable_local_get("spr_"+string(floor(inhalt))+"K");


Hab ich nicht ausprobiert sollte aber gehen. (oder versuch statt local, global einzusetzten, glaube dann ists richtiger xD (weis nicht ob konstanten als global gelten, glaube aber schon))

Willst du auf diese Drachen und -eier klicken?
Sie werden sich freuen ;)