Kollision bei Sprites?

Posted By: preacherX

Kollision bei Sprites? - 06/30/15 16:27

Ich erstelle in meinem Game per Script nur Sprites, verfügen die auch über Kollision?

Weil irgendwie bleiben die Sprites, wenn ich sie mit c_move bewege, hängen - obwohl das nächste Sprite was es blockiert noch weit entfernt ist...

Also, ich erstelle die Sprites in einer ziemlich hohen Auflösung und passe sie dann mit scale_x/y an...

Kann es sein, dass die Kollisionshülle dabei nicht mitrunterskaliert wird?
Und falls nicht, wie kann ich das manuell per Skript einstellen bzw. gibt es sonst noch Lösungen dafür?
Posted By: Kartoffel

Re: Kollision bei Sprites? - 06/30/15 16:55

du könntest die kollisionshülle manuell setzen, funktioniert vielleicht, hab nur gerade nicht die befehle parat.
Posted By: rayp

Re: Kollision bei Sprites? - 06/30/15 18:51

Am einfachsten ist es ein unsichtbares Model - Rechteck zu nutzen.
Auf dieses "tackerst" Du dann das Sprite auf.

Habe das mal so umgesetzt hat perfekt funktioniert.

z.B.
Code:
action SpriteMDL_WED(){
   ENTITY* sprite;
   sprite = ent_create ("sprite.tga", nullvector, NULL);
   if (sprite){
      sprite.tilt = 90; // oder -90 nicht sicher grad = topdownview
      set (sprite, PASSABLE);
   }
   while (me){
      my.pan = 180; // Richtung zum laufen
      c_move (me, vector (2 * time_step, 0, - 20 * time_step), nullvector, GLIDE | IGNORE_ME | IGNORE_SPRITES | IGNORE_PASSABLE);
      if (sprite){
         vec_set (sprite.x,   my.x);
         vec_set (sprite.pan, my.pan);
      }
      wait (1);
   }
}

Posted By: Kartoffel

Re: Kollision bei Sprites? - 06/30/15 19:09

ist leider nicht der effizienteste weg, weil du die anzahl der modelle verdoppelst und für jedes modell ne update funktion brauchst.

das lässt sich zwar etwas optimieren aber ich würde trotzdem die min_x max_x, ... methode verwenden ( falls sie überhaupt funktioniert grin )
Posted By: rayp

Re: Kollision bei Sprites? - 06/30/15 19:11

Mag sein, Vorteile überwiegen aber. Und ich glaube simple Rechtecke ohne Textur kann man verkraften. Habe mit dieser Methode bis zu 100 Gegner auf dem Screen bei 60fps darstellen können ( topdownshooter ). Weitere c_move oder Schattenprobleme fallen damit auch weg.

Aber jedem das seine.
Effizient ist es nicht 100%, das stimmt wohl grin
Posted By: preacherX

Re: Kollision bei Sprites? - 07/02/15 12:17

Danke für die Infos, hat sich nun erledigt! Habe herausgefunden, dass man auch bei Sprites scale_z benutzen muss, dann funktioniert die Kollision auch weiterhin... Das hätte man auch im Handbuch mal erklären können - werd ich gleich mal Bescheid sagen! wink
© 2024 lite-C Forums