Object nach Sprite abfragen

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

  • Object nach Sprite abfragen

    Hallo,

    Ich programmiere derzeit ein Spiel in GameMaker, bei dem ein Spieler-Objekt in einer gewissen Zeitspanne auf eine bestimmte Farbe muss.
    Ich möchte für die vielen verschiedenen Farben keine einzelnen Objekte verwenden, sondern ein Objekt mit verschiedenen Sprites verwenden.
    Meine Frage nun, wie kann ich abfragen, ob das Objekt einen bestimmten Sprite hat und damit dann die Kollisionserkennung?

    Mlg, SuspecT
    :thumbsup:
  • Wenn das verschiedenfarbige Objekt nur ein Sprite mit mehren Subsprites ist, dann kannst du den

    GML-Quellcode

    1. image_index
    abfragen.

    Falls du aber mehrere einzelne Sprites ohne Subsprites verwendest, dann kannst du

    GML-Quellcode

    1. switch(sprite_index) { case spr_black: xx break; case spr_red: xx break; }
    abfragen
  • Du kannst auch einfach die variable image_blend innerhalb der Objekte festsetzen und diese dann vergleichen. Das Objekt wird dann auch in dieser Farbe gemalt. zB image_blend = c_red; oder image_blend = make_colour_rgb(255,0,0);
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
  • Das eine Object das du dann im Room editor platzierst, kannst du dann rechtsklicken > creation code und dort zB image_index = 0 oder 1 oder type = spr_black oder spr_red, oder blend = c_red.

    Der creation code kann für jede instanz von dem object unterschiedlich sein. Das create Event vom Object ist aber immer für alle gleich.

    EDIT: sry, es ist schon spät^^ ich habs wohl nciht sinnerfassend gelesen.
    ich hab auch mal so ein ähnliches project gemacht und dort in etwa so einen code verwendet:

    GML-Quellcode

    1. collisionID = collision_rectangle(x-16,y-16,x+16,y+16, obj_player, false, true);
    2. if collisionID != noone //noone wäre keine collision mit object player{
    3. //wasauch immer bei einer collision passiert zB:
    4. collisionID.win = true;
    5. collisionID.time = 0;
    6. }

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Aku_Ryou ()

  • Jup der Creation Code ist wirklich sinnvoll. Ich sollte mir angewöhnen den zu nutzen. Genau so wie Path´s. Die kann man auch sehr gut nutzen um etwas grafisch zu zeichen und dann per Code für unterschiedliche Dinge zu verwenden (Bsp VertexBuffer, oder dein Game)
  • GML-Quellcode

    1. //CONTROL OBJECT:
    2. var player = instance_find(obj_player,0);
    3. if (player != noone) {
    4. //WENN SPIELER VORHANDEN
    5. with (player) {
    6. //SPIELER SUCHT NACH COLLISIONS
    7. var coll = collision_point( x, y, all, true, true );
    8. //all kann durch spezifisches Objekt ersetzt werden
    9. if (coll != noone) {
    10. //WENN COLLISION VORHANDEN
    11. with (coll) {
    12. //VERGLEICHE SPRITE MIT DEM DES SPIELERS
    13. if (sprite_index = player.sprite_index) {
    14. //TRIFFT ZU
    15. global.whatever = true;
    16. }else{
    17. //TRIFFT NICHT ZU
    18. global.whatever = false;
    19. }
    20. }
    21. }
    22. }
    23. }
    Alles anzeigen

    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel: