Du bist nicht angemeldet.

stevey

Dollar-Note

  • »stevey« ist der Autor dieses Themas

Beiträge: 316

Game Maker Version: 8 Pro

Selbsteinschätzung: GML Anfänger

  • Private Nachricht senden

1

Freitag, 19. Juni 2009, 16:04

an einer wand "entlangrutschen"

hey leute, bei meinem spiel erfolgt die bewegung des player mit folgendem code:

GML

1
move_towards_point(mouse_x,mouse_y,point_distance(x,y,mouse_x,mouse_y)/8)

nun will ich mache,dass wenn er mit obj_wall collidiert,nicht daran hängen bleibt,sondern daran entlangrutscht.ich hätte das mal so versucht,aber es klappt nicht:

GML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if y<obj_wall.y && x<mouse_x
{
hspeed=5
}

if y<obj_wall.y && x>mouse_x
{
hspeed=-5
}

if y>obj_wall.y && x<mouse_x
{
hspeed=-5
}

if y>obj_wall.y && x>mouse_x
{
hspeed=5
}

was ist falsch und was ist der richtige code?

anti0ogen blau

unregistriert

2

Freitag, 19. Juni 2009, 16:21

die game maker routinen find ich sche*ße, vor allem bei der bewegung.

ich benutze einfach das hier fürs bewegen.

x+=cos(degtorad(direction))*s;

s ist die speed, ob man degtorad braucht bin ich mir nicht sicher,

und y+=sin(degtorad(direction))*s;

dann kannsd dus so machen:

if collision_point(x+sin(degtorad(direction)),y,wand,1,0)<0 x+=sin(degtorad(direction))

dasselbe für y-richtung, so wird zB bei einer vertikalen wand, wenn du von oben links kommst -> nach unten rechts, die x-bewegung nicht ausgeführt wegen collisions abfrage und die y-richtung aber doch, also gleitest du an der wand nach unten vorbei.

außerdem kannsd du so nie in der wand stecken bleibenm weil vor der bewegung schon geprüft wird ob der nöchste schrit frei ist.

henrik1235

***Gold***

Beiträge: 1 442

Game Maker Version: 7 Pro

Selbsteinschätzung: GML Fortgeschrittener

  • Private Nachricht senden

3

Freitag, 19. Juni 2009, 16:23

Dann hem doch die D&D funktion names Bounce oder so.
Also das:

Da bleibt das nich hängen aber bewegt sich auch nicht weg weil es ja per maus gestuert wird.

Beiträge: 926

Game Maker Version: 8.1 Standard

Selbsteinschätzung: GML Experte

Aktuelles Projekt: Weltensegler

Danksagungen: 12

  • Private Nachricht senden

4

Freitag, 19. Juni 2009, 16:38

Dann hem doch die D&D funktion names Bounce oder so.
Also das:
Henrik: vieleicht ist dir noch nicht aufgefallen das bounce und sliden nicht das selbe ist!

EDIT: und das "Da bleibt das nich hängen aber bewegt sich auch nicht" ist das paradoxeste was ich je gehört habe!

Zum thema: ganu das selbe problem hatte ich auch mal, vor 1-2 monaten *kram kram*..

so, gefunden: klick mich

Du müsstest nur noch position_empty durch collision_point oder line ersetzen

MfG SDX

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »SDX« (19. Juni 2009, 16:47)


sebastian733

Moderator733

Beiträge: 570

Game Maker Version: 7 Pro

Selbsteinschätzung: GML Anfänger

Aktuelles Projekt: The Virus 4 - The Excision

  • Private Nachricht senden

5

Freitag, 19. Juni 2009, 17:01

versuche es mal damit:

GML

1
mp_potential_step(mouse_x,mouse_y,point_distance(x,y,mouse_x,mouse_y)/8,false)


ändere einfach das move_towards_point in mp_potential_step ;)
My Games:
- Mission A
- Mission B
- The Virus
- The Virus 2
- The Virus 3
- Blur melts Snow
- Blur melts Snow: 2nd Version
- Cave Jumper

Bastallion-Soft
Aktuelle Projekte: The Virus 4 - The Excision
In Planung: Mission C, Planet Jumper

stevey

Dollar-Note

  • »stevey« ist der Autor dieses Themas

Beiträge: 316

Game Maker Version: 8 Pro

Selbsteinschätzung: GML Anfänger

  • Private Nachricht senden

6

Samstag, 20. Juni 2009, 14:40

@ sebastian773: das bringt gar nichts!!!
@ anti0ogen blau: ich hab ins collisionsevent mit obj_wand folgenden code reingemacht:

GML

1
2
if collision_point(x+sin(degtorad(direction)),y,obj_wall,1,0)<0 x+=sin(degtorad(direction))
if collision_point(x,y+sin(degtorad(direction)),obj_wall,1,0)<0 y+=sin(degtorad(direction))

meine bewegung bleibt weiterhin:

GML

1
move_towards_point(mouse_x,mouse_y,point_distance(x,y,mouse_x,mouse_y)/8)


aber ich bleibe immernoch hängen.
warum?

anti0ogen blau

unregistriert

7

Samstag, 20. Juni 2009, 15:01

hoppla da seh ich nen fehler in mienem post, ob er dein problem auch löst weiß ich nicht, aber bei x musses cos sein und nicht sin. sry

Beiträge: 585

Game Maker Version: 7 Pro

Selbsteinschätzung: GML Fortgeschrittener

Aktuelles Projekt: Als ob ich je ein wirkliches Projekt hätte =P

  • Private Nachricht senden

8

Samstag, 20. Juni 2009, 15:12

Collision_event mit Wand:

x=xprevious;
y=yprevious;
if(!place_meeting(x+hspeed,y,obj_wall))
{
x+=hspeed;
}
if(!place_meeting(x,y+vspeed,obj_wall))
{
y+=vspeed;
}

Sollte klappen. Bei mir tut es das.
So far, Schattenphoenix~
_____________________________________________________________________________
"Who needs a stairway to heaven...
If there is an elevator to hell... ?
"
- Vergessen
"Auch ein perfektes Chaos ist etwas vollkommenes."
- Jean Genet

stevey

Dollar-Note

  • »stevey« ist der Autor dieses Themas

Beiträge: 316

Game Maker Version: 8 Pro

Selbsteinschätzung: GML Anfänger

  • Private Nachricht senden

9

Samstag, 20. Juni 2009, 20:16

nein,das funktioniert alles nicht.ich habs mal angehängt
»stevey« hat folgende Datei angehängt:
  • abrutschen.rar (9,85 kB - 52 mal heruntergeladen - zuletzt: 16. März 2012, 16:33)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »stevey« (21. Juni 2009, 11:57)


KingG-BlackOne

Kleiner Cäsar

Beiträge: 60

Game Maker Version: 7 Pro

Selbsteinschätzung: GML Fortgeschrittener

Aktuelles Projekt: Geheim....Hehehe.....

  • Private Nachricht senden

10

Sonntag, 21. Juni 2009, 20:20

Mach einfach gar nix besonderes.Wenn dein Objekt mit der Wand kollidiert setz es auf die Posiition die es in dem Moment hat.

stevey

Dollar-Note

  • »stevey« ist der Autor dieses Themas

Beiträge: 316

Game Maker Version: 8 Pro

Selbsteinschätzung: GML Anfänger

  • Private Nachricht senden

11

Sonntag, 21. Juni 2009, 20:40

Das ist ja dann wie als bliebe es hängen. gibt es eine lösung dafür?

henrik1235

***Gold***

Beiträge: 1 442

Game Maker Version: 7 Pro

Selbsteinschätzung: GML Fortgeschrittener

  • Private Nachricht senden

12

Sonntag, 21. Juni 2009, 21:14

Mach einfach gar nix besonderes.Wenn dein Objekt mit der Wand kollidiert setz es auf die Posiition die es in dem Moment hat.
Nein,weil wenn man die maus durch die Wand zeiht geht auch der Spieler mit ;)
@Topic:
MAch doch das das objeckt ein Pixel vor der Wand ist.

stevey

Dollar-Note

  • »stevey« ist der Autor dieses Themas

Beiträge: 316

Game Maker Version: 8 Pro

Selbsteinschätzung: GML Anfänger

  • Private Nachricht senden

13

Sonntag, 21. Juni 2009, 21:44

ich verstehe nicht was ihr meint,könnt ihr mir das einfach im example zeigen?

henrik1235

***Gold***

Beiträge: 1 442

Game Maker Version: 7 Pro

Selbsteinschätzung: GML Fortgeschrittener

  • Private Nachricht senden

14

Sonntag, 21. Juni 2009, 21:48

Collison mit Wand:

GML

1
x -=1

copyboy

Krankhafter Individualist

Beiträge: 2 046

Selbsteinschätzung: GML Experte

  • Private Nachricht senden

15

Montag, 22. Juni 2009, 13:34

Mach das Kollisions Event weg und folgenden Code in's Step Event:

GML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Gewünschte Richtung und Geschwindigkeit:
direction = point_direction(x,y,mouse_x,mouse_y);
speed = point_distance(x,y,mouse_x,mouse_y)/8;
// Bewegen, bis eine Kollision auftritt:
move_contact_solid(direction,speed);
// Stoppen, wenn in der Richtung etwas im Weg steht:
if (!place_free(x+sign(hspeed),y)) {hspeed = 0;}
if (!place_free(x,y+sign(vspeed))) {vspeed = 0;}
// Restdistanz ermitteln und bewegen:
if (hspeed != 0) {hspeed = xprevious+lengthdir_x(speed,direction)-x;}
if (vspeed != 0) {vspeed = yprevious+lengthdir_y(speed,direction)-y;}
if (speed != 0) {move_contact_solid(direction,speed);}
// Wir wollen nicht, dass der GM die Bewegung übernimmt:
speed = 0;

Ich hoffe es funktioniert wie gewollt :)

stevey

Dollar-Note

  • »stevey« ist der Autor dieses Themas

Beiträge: 316

Game Maker Version: 8 Pro

Selbsteinschätzung: GML Anfänger

  • Private Nachricht senden

16

Montag, 22. Juni 2009, 19:41

danke copyboy
funktioniert jetzt alles suuuuper

KingG-BlackOne

Kleiner Cäsar

Beiträge: 60

Game Maker Version: 7 Pro

Selbsteinschätzung: GML Fortgeschrittener

Aktuelles Projekt: Geheim....Hehehe.....

  • Private Nachricht senden

17

Donnerstag, 25. Juni 2009, 14:23

Mach einfach gar nix besonderes.Wenn dein Objekt mit der Wand kollidiert setz es auf die Posiition die es in dem Moment hat.
Nein,weil wenn man die maus durch die Wand zeiht geht auch der Spieler mit ;)
Doch, das geht.Mal ausprobiert?Hört sich seltsam an aber funktioniert.Vielleicht habe ich mich nicht verständlich genug ausgedrückt aber ich weiß wovon ich spreche. ;)

stevey

Dollar-Note

  • »stevey« ist der Autor dieses Themas

Beiträge: 316

Game Maker Version: 8 Pro

Selbsteinschätzung: GML Anfänger

  • Private Nachricht senden

18

Donnerstag, 25. Juni 2009, 15:58

dann mach mir mal ein beispiel,weil ich nicht wirklich weiß wie du das machst

KingG-BlackOne

Kleiner Cäsar

Beiträge: 60

Game Maker Version: 7 Pro

Selbsteinschätzung: GML Fortgeschrittener

Aktuelles Projekt: Geheim....Hehehe.....

  • Private Nachricht senden

19

Freitag, 26. Juni 2009, 16:54

Leider gibt es doch kein großes Geheimnis.Habe gerade festgestellt das das mit dem rutschen dann nicht geht.
Ich hab vor lauter Überzeugung in meine Fähigkeiten die Frage nicht richtig gelesen. :D

stevey

Dollar-Note

  • »stevey« ist der Autor dieses Themas

Beiträge: 316

Game Maker Version: 8 Pro

Selbsteinschätzung: GML Anfänger

  • Private Nachricht senden

20

Freitag, 26. Juni 2009, 21:31

ok ist nicht so schlimm