Mausposition, Objektposition

Fragen zu "Adventure Game Studio"? Hier rein!
Antworten
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4406
Registriert: 12.03.2004, 16:55

Mausposition, Objektposition

Beitrag von DieFüchsin »

Ich würde gern die aktuellen Mauskoordinaten abfragen, um den Charakter in entsprechende Richtung zu drehen. (FaceLocation)

ebenso mit den Objekten, wobei ich die Funktion gern ganz allgemein gehalten hätte um sie auf alle Objekte anwenden zu können.

(So in der Art wie man das aktive Inventar oder den PlayerCharacter abfragen kann... kann man das auch mit angeklickten Objekten machen?)
Danke, Adventuretreff! <3
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Mauskoordinaten: mouse.x und mouse.y

Objektkoordinaten: oObjekt.X und oObjekt.Y

Code: Alles auswählen

function FaceObject(Object*o) {
  int y=o.Baseline;
  if (y==0) y=o.Y;
  player.FaceLocation(o.X+Game.SpriteWidth[o.Graphic]/2, y);
}
Use gopher repellent on funny little man
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4406
Registriert: 12.03.2004, 16:55

Beitrag von DieFüchsin »

Das heißt, ich muss FaceObject(NamevomObjekt) schreiben um die Funktion auszuführen? Kann ich nicht überprüfen, welches Objekt soeben angeklickt wurde?
Danke, Adventuretreff! <3
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Doch, klar:

In on_mouse_click:

Code: Alles auswählen

  if (button==eMouseLeft) {
    Object*o;
    if (GetLocationType(mouse.x, mouse.y)==eLocationObject) {
      o=Object.GetAtScreenXY(mouse.x, mouse.y);
      FaceObject(o);
    }
    ProcessClick(...)
  ...
Use gopher repellent on funny little man
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4406
Registriert: 12.03.2004, 16:55

Beitrag von DieFüchsin »

Was bedeutet das o? Muss ich das irgendwo definieren?
Danke, Adventuretreff! <3
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Nein, o hab ich ja schon in der zweiten Zeile deklariert.
Es ist ein Pointer vom Typ Object; wenn sich bei einem Linksklick an der Mausposition ein Objekt befindet, wird es in o gespeichert; dann wird FaceObject(o) aufgerufen, d.h. der PC schaut das Objekt an, bevor ProcessClick aufgerufen wird.
Use gopher repellent on funny little man
Benutzeravatar
DieFüchsin
Adventure-Gott
Adventure-Gott
Beiträge: 4406
Registriert: 12.03.2004, 16:55

Beitrag von DieFüchsin »

Mal ne Überlegung... wenn ich den character bei jedem ausgeführten Mausklick automatisch in die angeklickte Richtung schauen lasse, ist das mit dem FaceObject und FaceCharacter ja eigentlich überflüssig... oder?
Danke, Adventuretreff! <3
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Es ist nicht ganz dasselbe.
Deswegen hab ich extra die Funktion geschrieben.

Obwohl es nur in bestimmten Situation tatsächlich eine Rolle spielt.

Aber ein Beispiel:

Mal angenommen, der Charakter steht direkt links neben und etwas unterhalb von einer Standuhr, die als Objekt eingebaut ist.

Mit FaceLocation(mouse.x, mouse.y) würde der Char immer nach oben schauen, wenn man die Standuhr anklickt, außer man würde wirklich ihren Fuß anklicken.
Mein Code lässt den Char hingegen korrekterweise nach rechts schauen, da er die Bodenkoordinaten des Objekts verwendet.

Ist reine Geschmackssache.
Use gopher repellent on funny little man
Antworten