2D Shooter - Wie macht man Blut?

  • 2D Shooter - Wie macht man Blut?

    hi...ich arbeite gerade an einem 2D shooter in der vogelperspektive...also ich habe folgende frage:
    Wie macht man das wenn das object ,,bullet,, gegen den gegner kommt das verschieden aussehendes blut ensteht und auf den boden kleben bleibt?
    (falls es so ein thread schon ma gab dann sry , hab keins gefunden)

    danke schon mal im vorraus :thumbsup:

    Edit:ich hätte noch zwei fragen...und zwar wie macht man das, dass die gegner an einer zufälligen position außerhalb des raumes erstellt werden und wie macht man das,dass der raum egal wie groß er ist für den spieler begrenzt wird(ohne ein solid objekt zu nutzen)
    Meine Spiele:
    - Mission A
    - Mission B
    - The Virus 1, 2, 3
    - The Virus 4: The Excision
    - Blur melts Snow
    - Blur melts Snow: 2nd Version
    - Cave Jumper

    Hauptrojekt: Party Mania(Arbeitstitel) - große Multiplayer-Minispielsammlung
    In Planung: Planet Jumper(Nachfolger von Cave Jumper)

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von sebastian733 ()

  • Für deine erste Frage kannst du einfach an der Position des Gegners bzw. Spielers das Objekt Blut mit Blut als Sprite folgendermaßen erstellen:

    GML-Quellcode

    1. instance_create(Gegner.x,Gegner.y,obj_Blut);

    Und wenn das Blut irgentwann auch weggehen soll, erstellst du ein Alarm0-Event im Create-Event, setzt den Alarm auf meinetwegen 800, und im Alarm0 selbst zerstörst du das objekt mit:

    GML-Quellcode

    1. instance_destroy();

    ____
    Adventskalender 2010: Blue Smiley
  • Ich weiß nicht, wie's in GM7 ausschaut, aber soviel anders sollte das nicht sein.

    Für das erste "Problem" würde ich erstmal ein paar verschiedene Blutkleckse malen (von mir aus von Hand) und die in einen Sprite packen. Dann würde ich ein Objekt obj_blood erstellen, is klar, und im Creation-Event in etwa folgendes bringen:

    Change Sprite
    Sprite: spr_blood
    Subimage: floor(random(bildzahl))
    Speed: 0

    Transform Sprite
    Xscale: 1
    Yscale: 2
    Angle: random(360)
    Mirror: no mirroring

    Damit wird zufällig ein "Blutbild" ausgewählt und gedreht, das sieht besser aus, denn es gibt weniger Wiederholungen. Um das Blut verschwinden zu lassen, bevorzuge ich eine Methode, die es langsam ausblendet:
    Setze beim Creation-Event einen Alarm auf einen von dir bestimmten Wert. Zusätzlich deklarierst du eine Variable auf 1. Im Alarm-Event verringerst du diese Variable (z.B. um 0.1), setzt den Alpha-Wert in "Color Sprite" auf diese Variable und gibst dem Alarm erneut einen Wert. Am Besten prüfst du zwischendurch noch, ob die Variable kleiner oder gleich null ist und zerstörst die Instanz in diesem Fall.

    Das zweite Problem ist nicht sonderlich kompliziert:

    GML-Quellcode

    1. richtung = choose(1,2,3,4) //es geht auch anders, bin ich aber um diese Uhrzeit nicht in Stimmung zu
    2. if richtung = 1 instance_create(room_width+32,random(room_height),obj_enemy)
    3. if richtung = 2 instance_create(random(room_width),-32,obj_enemy)
    4. if richtung = 3 instance_create(-32,random(room_height),obj_enemy)
    5. if richtung = 4 instance_create(random(room_width),room_height+32,obj_enemy)


    Es wird zuerst gewählt (wiederum per Zufall), aus welcher Richtung der Gegner kommen soll. Dann wird das Gegnerobjekt an einer zufälligen Stelle außerhalb des Raumes, aber in unmittelbarer Nähe, erstellt.

    Um die für den Spieler begehbare Fläche zu begrenzen, kannst du vier Variablen deklarieren: X1, X2, Y1 und Y2. Weiter links als X1 geht nicht, weiter oben als Y1 geht nicht und so weiter. Natürlich nur, wenn du das auch im Bewegungsevent verankerst. Mein Favorit ist folgendes:
    "A" - Event

    GML-Quellcode

    1. //Nach links laufen
    2. if x-1 > X1 x-=1


    Das dann für die anderen Richtungen hinsichtlich X und Y sowie + und - abändern.
  • danke leute das mit dem blut und das erscheinen der gegner hat perfekto gefunzt :rolleyes:

    Edit:ich habe ein neues problem(sry falls man nicht neue probleme hier reinschreiben darf :S )...also ich habe einen splitscreen modus in meinem spiel eingebaut(halt view0 und view1)...ich benutze natrülich ein interface(mit rectangle,leben uns so) für jeden ein interface im view...mein problem ist das man den interface des mitspielers im eigenen view sehen kann und umgekehrt auch...also wie mache ich dass das eige interface für den andren mitspieler unsichtichtbar ist und umgekehrt auch...ich habe echt kp wie man das macht ,hab einiges ausprobiert aber hab seinfach nicht geschafft bitte helft mir :rolleyes: (ich hoffe ich habe es verständlich erklärt :) )
    Meine Spiele:
    - Mission A
    - Mission B
    - The Virus 1, 2, 3
    - The Virus 4: The Excision
    - Blur melts Snow
    - Blur melts Snow: 2nd Version
    - Cave Jumper

    Hauptrojekt: Party Mania(Arbeitstitel) - große Multiplayer-Minispielsammlung
    In Planung: Planet Jumper(Nachfolger von Cave Jumper)

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

  • ooh man ich hätte einfach in der hilfe nachgucken sollen :headtouch: sry
    Meine Spiele:
    - Mission A
    - Mission B
    - The Virus 1, 2, 3
    - The Virus 4: The Excision
    - Blur melts Snow
    - Blur melts Snow: 2nd Version
    - Cave Jumper

    Hauptrojekt: Party Mania(Arbeitstitel) - große Multiplayer-Minispielsammlung
    In Planung: Planet Jumper(Nachfolger von Cave Jumper)

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von sebastian733 ()