Distanzerkennung GMOgre - Fehlverhalten?

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Distanzerkennung GMOgre - Fehlverhalten?

    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:

    GML-Quellcode

    1. // Entfernung zum Boden messen
    2. GetSceneNodePosition(node_id);
    3. /*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));
    4. /*Funktioniert*/ dist_ground = CastRayFromPoint(GetX()-3, GetY()+3, GetZ(), 0, 0, -1, 1)
    5. // Wenn in der Luft, jumping setzen
    6. if (dist_ground != 0) jumping = true;
    7. // Wenn Space, springen
    8. if (keyboard_check(vk_space) && jumping == false) { vertical_velocity = 100; jumping = true; }
    9. if (jumping == true)
    10. {
    11. TranslateSceneNode(node_id, 0, 0, vertical_velocity * delta_time);
    12. GetSceneNodePosition(node_id);
    13. if (GetZ() <= z-dist_ground && dist_ground != -1)
    14. {
    15. // Unter dem Boden! Ausgleich:
    16. TranslateSceneNode(node_id, 0, 0, z-dist_ground-GetZ());
    17. vertical_velocity = 0;
    18. jumping = false;
    19. }
    20. else
    21. vertical_velocity -= 180 * delta_time;
    22. }
    Alles anzeigen