Station 10 - Ungaalborg | Mediehuset for unge fra 13-19 år i Aalborg Kommune

Car movement 2D

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Carmovement2D : MonoBehaviour
{
    public float CarSpeed = 400;
    public float RotateSpeed = 20;

    public Rigidbody2D CarRigidbody;

    void Update()
    {
 
            // Den skal rotere omkring z aksen
            // og ganges med en hastighed så det ikke går langsomt at rotere.
            transform.Rotate(0, 0, -Input.GetAxis("Horizontal") * RotateSpeed * Time.deltaTime);
  

        // Vi sætter dens hastighed til at gå opad
        // som styres af aksen "Vertical" i input manageren
        // ganget med carspeed og time deltatime for at gøre det smooth 
        CarRigidbody.velocity = (transform.up*Input.GetAxis("Vertical")) * Time.deltaTime * CarSpeed;

    }
}

I dette script prøver vi at lave en bil der kører fremad og rotere til siden med piletasterne (eller A/D). 

Linje 7-8: Variabler til at justere hastigheden på bilen og hvor hurtigt den skal rotere

Linje 17: Hver frame skal den tjekke om den skal rotere. I koden bruger vi funktionen “Rotate” som vil vide hvor meget den skal rotere i x, y og z. De første to er 0 fordi vi kun rotere med Z i 2D (ellers vil det se underligt ud).  “Input.GetAxis(“Horizontal”) henter en værdi fra inputmanageren som standard er sat til A/D eller piletaster til venstre/højre. Den værdi bliver 0 hvis vi ikke trykker på noget, -1 hvis vi trykker på den ene knap og +1 hvis vi trykker på den anden. Dvs. at vi ville rotere -1 eller +1 per frame hvis det var det eneste der stod (og vi holdte knapperne nede).  Vi ganger dog med Time.deltatime og Rotatespeed så den rotere lidt hurtigere (i sekundet – ikke per frame pga. Time.deltatime). 

Linje 23: CarRigidbody.velocity (hastigheden for bilen) bliver sat til at blive bevirket af om du trykker på up/ned (eller w/s) via GetAxis(“Vertical”). Her gange vi så med Carspeed og deltatime for at det bliver i sekundet.