Mausposition, Objektposition
- DieFüchsin
- Adventure-Gott
- Beiträge: 4406
- Registriert: 12.03.2004, 16:55
Mausposition, Objektposition
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?)
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
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
Mauskoordinaten: mouse.x und mouse.y
Objektkoordinaten: oObjekt.X und oObjekt.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
- DieFüchsin
- Adventure-Gott
- Beiträge: 4406
- Registriert: 12.03.2004, 16:55
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
Doch, klar:
In on_mouse_click:
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
- DieFüchsin
- Adventure-Gott
- Beiträge: 4406
- Registriert: 12.03.2004, 16:55
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
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.
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
- DieFüchsin
- Adventure-Gott
- Beiträge: 4406
- Registriert: 12.03.2004, 16:55
- KhrisMUC
- Adventure-Gott
- Beiträge: 4674
- Registriert: 14.03.2005, 00:55
- Wohnort: München
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.
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