Beginner's Handleiding voor Construct 2

4

Index

Tagged

Contributors

Stats

36,577 visits, 48,999 views

Tools

Translations

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

Published on 22 Feb, 2017. Last updated 25 Feb, 2019

Spel functionaliteit toevoegen

Als elke gebeurtenis net zo gedetailleerd wordt beschreven als hiervoor, wordt dit een heel lange tutorial. Laten we de beschrijving een beetje inkorten voor de volgende gebeurtenissen. Vergeet niet, de stappen om een conditie of actie toe te voegen zijn:

1. Dubbelklik om een nieuwe gebeurtenis in te voegen, of klik een Add action link om een actie toe te voegen.

2. Dubbelklik op het object waarin de conditie/gebeurtenis zich bevindt.

3. Dubbelklik op de conditie/gebeurtenis die je wilt.

4. Voer parameters in, als dat nodig is.

Vanaf nu aan, zullen gebeurtenissen worden beschreven als het object, gevolgd door de conditie / actie, gevolgd door de parameters. Zo zou de gebeurtenis die we zojuist hebben ingevoerd worden geschreven:

Voeg de conditie toe: System -> Every tick

Voeg de actie toe: Player -> Set angle towards position -> X: Mouse.X, Y: Mouse.Y

Zorg dat de speler gaat schieten

Wanneer de speler klikt, moet er een kogel schieten. Dit kan gedaan worden met de Spawn a object actie in Speler, die een nieuwe instantie van een object op dezelfde positie en in de hoek creëert. De Bullet movement die we eerder toegevoegd hebbem zorgt dat deze naar voren vliegt. Maak de volgende gebeurtenis:

Conditie: Mouse -> On click -> Left clicked (default)

Actie: Player -> Spawn another object -> Kies voor Object, kies het Kogel object. Bij Layer, voeg 1 in (de "Main" laag is laag 1 - onthoudt Construct 2 telt vanaf 0). Laat Image point 0.

Je gebeurtenis ziet er nu als volgt uit:

Als je het spel draait, zult je merken dat de kogels vanuit het midden van de speler schieten, in plaats van het einde van het pistool. Laten we dat aanpassen door het plaatsen van een Image point aan het eind van het pistool. (Een image point is gewoon een plek op een plaatje waaruit je objecten kunt spawnen.)

Klik met de rechtermuisknop op de speler in het project of object bar en kies Edit animations.

De image-editor voor de speler verschijnt weer. Klik op de origin and image points tool:

... en het dialoogvenster image points opent:

De oorsprong van het verschijnt als een rood punt. Dat is de "hotspot" of het "scharnierpunt" van het object. Als je het object draait, draait het rond de oorsprong. Wij willen een ander image point toevoegen voor het pistool, dus klik op de groene Add knop. Een blauw punt verschijnt - dat is ons nieuwe image point. Klik met de linkermuisknop op het einde van het pistool van de speler om het image point daar te plaatsen:

Sluit de image editor. Dubbelklik op de Spawn an object actie die we eerder hebben toegevoegd, en verander het image point naar 1 . (De oorsprong is altijd het eerste beeldpunt, en onthoud Construct 2 telt vanaf nul.) De gebeurtenis ziet er nu uit als hieronder - stel vast dat er nu image point 1 staat:

Start het spel. Eerst even opslaan De kogels schieten nu uit het einde van je wapen! De kogels doen nog niets hoewel je nu zult beginnen te beseffen dat als je het eenmaal te pakken hebt met het event-systeem, dat je zeer snel functionaliteit in elkaar kunt zetten.

Laten we zorgen dat de kogels de monsters doden. Voeg de volgende gebeurtenis toe:

Conditie: Kogel -> On collision with another object -> kies Monster.

Actie: Monster -> Destroy

Actie: Kogel -> Spawn another object -> Explosion, layer 1

Actie: Kogel -> Destroy

Het explosie effect

Start het spel en probeer het opnemen tegen een van het monster. Oeps, de explosie heeft een grote zwarte rand!

Je had vanaf het begin misschien kunnen raden dat het er zo zou uit zou gaan zien, en kunnen vragen of ons spel echt zo zou eindigen! Maak je geen zorgen, het zal niet gebeuren. Klik op de Explosie object in de object bar in de rechteronderkant, of de Project bar (in de tabbladen bij de layers bar). De eigenschappen worden weergegeven in de properties bar aan de linkerkant. Zet aan de onderkant de Blendmode property naar Additive . Probeer het spel nu opnieuw.

Waarom werkt dit? Zonder in te gaan op de details, zijn gewone beelden geplakt op het scherm. Met het additive effect, wordt elke pixel in plaats van toegevoegd (als in, opgeteld) bij de achtergrond pixel erachter. Zwart zijn pixels met waarde nul, zodat er niets wordt toegevoegd - je ziet de zwarte achtergrond niet. Helderdere kleuren voegen meer toe, dus die lijken sterker. Dit is geweldig voor ontploffingen en lichteffecten.

Maak de monsters een beetje slimmer

Nu dwalen de monsters af naar buiten de lay-out aan de rechterkant. Laten we ze een beetje interessanter maken. Allereerst, laten we ze beginnen onder een willekeurige hoek.

Conditie: System -> On start of Layout

Actie: Monster -> Set angle -> random(360)

Ze zullen nog steeds voor altijd afdwalen als ze de lay-out verlaten, om nooit meer terug te zien. Laten we ze daar binnen houden. Wat we doen is we wijzen ze terug naar de speler als ze de lay-out te verlaten. Dit zorgt voor twee dingen: ze blijven altijd binnen de lay-out, en als de speler stilstaat, komen de monsters recht op hem af!

Conditie: Monster -> Is outside layout

Actie: Monster -> Set angle toward position -> For X, Player.X - for Y, Player.Y.

Start het spel. Als je een tijdje rond blijft hangen, zul je merken dat de monsters ook rond de lay-out blijven hangen, en ze gaan in allerlei richtingen. Het is nauwelijks AI, maar dit voldoet!

Nu, stel dat we vijf keer moeten schieten voor dat het monster sterft, in plaats van onmiddellijk dood te gaan als het wordt geraakt. Hoe gaan we dat doen? Als we maar één "Health" teller hebben en we een monster vijf keer hebben geraakt, zullen alle monsters sterven. In plaats daarvan moeten we voor elk monster zijn eigen gezondheid onthouden. We kunnen dat doen met instance variabelen

.

  • 0 Comments

Want to leave a comment? Login or Register an account!