# Projekt: Breakout i Unity
Breakout är ett klassiskt spel där man styr en platform för att hålla en studsande boll i luften. När bollen studsar på olika block försvinner dem, och målet är att få alla block att försvinna.

I det här projektet ska vi försöka koda ett spel i Unity som liknar Breakout. Det huvudsakliga målet är att ta det vi har lärt oss och applicera i ett nytt projekt.
## Del 1 - setup
Börja med att skapa ett nytt Unity projekt. Eftersom vi har jobbat mest i 3D kan vi skapa ett 3D projekt. (Går även bra i 2D, men några saker kommer vara annorlunda).
Förbered din scen genom att skapa de GameObjects som behövs:
* en spelar-platform
* en boll
* ett antal block.
* väggar

## Del 2 - spelarrörelse
Lägg till en rigidbody till spelaren och ändra inställningar så att den inte påverkas av gravitation och är låst till att bara röra sig i x-led.
Lägg sedan till ett skript som gör så att vi kan styra spelaren höger och vänster. Ta inspiration av hur vi gjorde för platforms-exemplet.
## Del 3 - bollen
Lägg till en rigidbody till bollen också och justera inställningarna. Lägg till ett skript som ger den en hastighet nedåt vid spelets start.
För att få bollen att studsa behöver vi ändra dess fysiska material. Skapa ett nytt Physic material (se bild nedan), och sätt bounce till 1. Det här materialet ger vi till bollen, men också alla objekt som bollen kommer studsa på.


När bollen studsar varierar hastigheten ganska mycket. Vi kan lösa detta genom att i update-funktionen på bollen sätta hastigheten till en viss storlek.
```csharp
void Update(){
float speed = 4;
myRigidbody.velocity = myRigidbody.velocity.normalized * speed;
}
```
`myRigidbody.velocity.normalized` ger oss hastigheten som en vektor med storlek 1.
## Del 4 - kollisioner
När bollen kolliderar med ett block vill vi att blocket ska försvinna. Detta löser vi med metoden `OnCollisionEnter(Collision collision)` och `Destroy`-metoden. Se hur vi gjorde med skott-funktionen tidigare och ta inspiration därifrån. Fundera också på hur vi kan skriva en if-sats som kollar att bollen kolliderar med ett block och inte något annat.
## Del 5 - återställa bollen
När bollen åker under spelaren vill vi att spelet ska börja om. Framförallt vill vi att bollen ska hoppa tillbaka till en startposition. Detta löser vi med en if-sats i `update`-funktionen på bollen där vi tittar på `transform.position.y` och sätter position till start. Till exempel:
```csharp
if (transform.position.y < -1){
transform.position = new Vector3(0,5,0);
}
```
## Del 6 - förbättringar
Kvar att göra är några förbättringar:
* lägg till poäng som ökar varje gång ett block går sönder
* lägg till liv som minskar varje gång bollen åker ut
* lägg till "powerups" som spawnar när ett block går sönder, som gör till exempel att spelaren åker fortare, eller blir större