Hallo,
Ich bin an einem kleinen 3D-Projekt dabei und habe folgendes Problem:
Mein Mesh erkennt den Boden nur dann, wenn nur eine Distanzabfrage gemacht wird.
Wenn ich zwei (leicht versetzte) erstelle und die Minimumdistanz nehme,
ist laut Debugger die Variable jumping sowie dist_ground durchgehend auf 0.
Wenn ich dann springe, schwebe ich einfach nur um ein paar Einheiten
nach oben (je nach Länge des Drückens von Space).
Ist mir unerklärlich deshalb frage ich ja euch
Teil des STEP-Codes:
Alles anzeigen
Ich bin an einem kleinen 3D-Projekt dabei und habe folgendes Problem:
Mein Mesh erkennt den Boden nur dann, wenn nur eine Distanzabfrage gemacht wird.
Wenn ich zwei (leicht versetzte) erstelle und die Minimumdistanz nehme,
ist laut Debugger die Variable jumping sowie dist_ground durchgehend auf 0.
Wenn ich dann springe, schwebe ich einfach nur um ein paar Einheiten
nach oben (je nach Länge des Drückens von Space).
Ist mir unerklärlich deshalb frage ich ja euch

Teil des STEP-Codes:
GML-Quellcode
- // Entfernung zum Boden messen
- GetSceneNodePosition(node_id);
- /*Funktioniert nicht*/ dist_ground = min(CastRayFromPoint(GetX()-3, GetY()+3, GetZ(), 0, 0, -1, 1),CastRayFromPoint(GetX()-3, GetY()-3, GetZ(), 0, 0, -1, 1));
- /*Funktioniert*/ dist_ground = CastRayFromPoint(GetX()-3, GetY()+3, GetZ(), 0, 0, -1, 1)
- // Wenn in der Luft, jumping setzen
- if (dist_ground != 0) jumping = true;
- // Wenn Space, springen
- if (keyboard_check(vk_space) && jumping == false) { vertical_velocity = 100; jumping = true; }
- if (jumping == true)
- {
- TranslateSceneNode(node_id, 0, 0, vertical_velocity * delta_time);
- GetSceneNodePosition(node_id);
- if (GetZ() <= z-dist_ground && dist_ground != -1)
- {
- // Unter dem Boden! Ausgleich:
- TranslateSceneNode(node_id, 0, 0, z-dist_ground-GetZ());
- vertical_velocity = 0;
- jumping = false;
- }
- else
- vertical_velocity -= 180 * delta_time;
- }